Я пишу программу для чтения лог-файлов, конвертируя временные метки по пути. В настоящее время я использую DateTime.TryParseExact()
для быстрого анализа временных меток, чтобы убедиться, что все правильно. Проблема, с которой я сталкиваюсь, заключается в том, что распознаются только обозначения AM, PM работают без проблем. Я выделил проблему в следующем фрагменте:
string format = "M/dd/yyyy H:mm:ss tt";
string teststringPM = "1/21/2019 3:25:32 PM";
string teststringAM = "1/21/2019 3:25:32 AM";
DateTime placeholderPM;
DateTime placeholderAM;
DateTime.TryParseExact(teststringPM, format, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out placeholderPM);
DateTime.TryParseExact(teststringAM, format, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out placeholderAM);
Console.WriteLine("placeholderPM:");
Console.WriteLine(placeholderPM.ToString());
Console.WriteLine("placeholderAM:");
Console.WriteLine(placeholderAM.ToString());
Вывод из этого выглядит следующим образом:
placeholderPM:
1/1/0001 12:00:00 AM
placeholderAM:
1/21/2019 3:25:32 AM
Мы видим, что placeholderPM - это новое значение даты и времени по умолчанию. Я попытался изменить IFormatProvider на en-US без каких-либо изменений в поведении.
Любое понимание высоко ценится!