Скрытое C# DateTime из США в британский формат - PullRequest
0 голосов
/ 18 марта 2020
string DateAndTime = Cells[1].Text; // Output is 3/18/2020 3:00:18 PM

DateTime DT = DateTime.ParseExact(DateAndTime, "dd/MM/yyyy HH:mm:ss", CultureInfo.CurrentCulture);

Ошибка: строка не была распознана как действительная дата и время

Текущая строка: 18.03.20 15:00:18

Я хочу преобразовать и проанализировать ее до DateTime как 18/03/2020 15:00:18

Ответы [ 2 ]

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

ParseExact делает именно это, анализирует строку, используя предоставленную вами точную спецификацию. И, согласно вашей спецификации, «18» не является действительным месяцем. Звучит так, как будто вы хотите поменять местами идентификаторы месяца и дня (и использовать только M вместо MM для месяца и использовать h для сингл-ди git 12-часовых часов и добавить tt для спецификации AM / PM):

DateTime.ParseExact(DateAndTime, "M/dd/yyyy h:mm:ss tt")

Как только он проанализирован как DateTime, вы можете вывести значение в любом формате, который вам нравится. Например:

DT.ToString("dd/MM/yyyy HH:mm:ss")

Но ваш формат ввода очень сильно отличается от "дд / мм / гггг ЧЧ: мм: сс". Для синтаксического анализа вам необходимо соответствовать формату ввода, а не предполагаемому формату нисходящего потока.

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

DateTime DT = DateTime.Parse (DateAndTime, новый CultureInfo ("en-US"));

...