Преобразовать формат строки c в DateTime в C# - PullRequest
0 голосов
/ 04 марта 2020

У меня есть две такие строки: «14 августа 2019 г. 09: 56: 33.359571620» и «14 августа 2019 г. 09: 56: 33.359584300». Я хочу преобразовать его в формат DateTime в C#, чтобы получить разницу между двумя временными метками в наносекундах. Как это сделать?

Я пробовал что-то вроде этого -

DateTime  MyDateTime = new DateTime(Convert.ToInt32("2019"), GetMonthNumber("Aug"), Convert.ToInt32("14"), Convert.ToInt32("09"), Convert.ToInt32("56"), Convert.ToInt32("33"));
MyDateTime.AddTicks(359571620);
DateTime MyDateTime2 = new DateTime(Convert.ToInt32("2019"), GetMonthNumber("Aug"), Convert.ToInt32("14"), Convert.ToInt32("09"), Convert.ToInt32("56"), Convert.ToInt32("33"));
MyDateTime2.AddTicks(359584300);
TimeSpan ts = MyDateTime2 - MyDateTime;
Console.WriteLine(ts.Ticks);

Приведенный выше код возвращает 0, но я ожидаю 12680 в качестве вывода.

Ответы [ 2 ]

2 голосов
/ 04 марта 2020

Вы должны назначить его обратно после добавления тиков

DateTime  MyDateTime = new DateTime(Convert.ToInt32("2019"), GetMonthNumber("Aug"), Convert.ToInt32("14"), Convert.ToInt32("09"), Convert.ToInt32("56"), Convert.ToInt32("33"));
MyDateTime = MyDateTime.AddTicks(359571620);
DateTime MyDateTime2 = new DateTime(Convert.ToInt32("2019"), GetMonthNumber("Aug"), Convert.ToInt32("14"), Convert.ToInt32("09"), Convert.ToInt32("56"), Convert.ToInt32("33"));
MyDateTime2 = MyDateTime2.AddTicks(359584300);
TimeSpan ts = MyDateTime2 - MyDateTime;
Console.WriteLine(ts.Ticks);

DateTime.AddTicks не изменяет это значение даты, вместо этого оно возвращает новое

0 голосов
/ 04 марта 2020

Попробуйте это

string dateformat = "Aug 14, 2019 09:56:33.359571620 Eastern Daylight Time";
DateTime anser = DateTime.ParseExact(dateformat.Substring(0,dateformat.IndexOf(".")), "MMM dd, yyyy hh:mm:ss", CultureInfo.InvariantCulture);

На основе TimeZone

TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
string dateformat = "Aug 14, 2019 09:56:33.359571620 Eastern Daylight Time";
DateTime anser = DateTime.ParseExact(dateformat.Substring(0,dateformat.IndexOf(".")), "MMM dd, yyyy hh:mm:ss", CultureInfo.InvariantCulture);
DateTime dateeee=TimeZoneInfo.ConvertTimeFromUtc(anser, tzi);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...