Как преобразовать string или datetime.month в int?

179
24 декабря 2018, 01:20
public void ShomMonthYear(DateTime mY)
        {
            int m, y;
            int sum = 0;
            string str, coin;
            using (StreamReader sr = new StreamReader(path))
            {
                str = sr.ReadLine();
                m = Convert.ToInt32(str[3] + str[4]);
                y = Convert.ToInt32(str[6] + str[7] + str[8] + str[9]);
                if ((m == mY.Month) && (y == mY.Year))
                {
                    coin = str.Split(' ')[2];
                    sum += Convert.ToInt32(coin);
                }
            }
            Console.WriteLine("Суммарный расход за указанный месяц составил: " + sum);
        }

Необходимо преобразовать месяц даты в int. Входная строка из потока выглядит следующим образом: "12.09.2022 111111" где до пробела идёт дата, а после пробела идёт число. Необходимо из даты сделать число, делаю его преобразуя подстроку "09" в число, но используя Convert.ToInt32 я из "09" получаю не 9 а 105. Как сделать правильно? Или может есть конвертер из строки в дату?

Answer 1

Вообще лучше всего парсить первую часть в datetime, и из него получать нужные данные:

var str = "12.09.2022 111111";
var date = Convert.ToDateTime(str.Split(' ')[0]);
Console.WriteLine(date.Month);
Answer 2

но используя Convert.ToInt32 я из "09" получаю не 9 а 105

Сложение двух char дает int равное сумме кодов этих символов.

string str = "12.09.2022 111111";
Console.WriteLine("{0} - {1}", str[3] + str[4], (str[3] + str[4]).GetType().FullName);
Console.WriteLine("{0} - {1}", "" + str[3] + str[4], ("" + str[3] + str[4]).GetType().FullName);

Вывод:

105 - System.Int32
09 - System.String
READ ALSO
Наследование свойства IsEnabled в TabControl

Наследование свойства IsEnabled в TabControl

Подскажите как решить следующую проблемуЕсть TabControl с несколькими TabItem

167
Не функционирует перемещение Unity 2D

Не функционирует перемещение Unity 2D

Написал скрипт на шарпе, прикрепил его к обьекту игрока, по задумке изображение должно перемещаться по нажатию на стрелку вправо, но ничего...

132