У меня есть эта строка
01 Nov 2018 10:50
, и я хочу преобразовать его в формат Datetime следующим образом
2018-11-01 10:50:00.000
Я пробовал это
DateTime.ParseExact("01 Nov 2018 10:50", "yyyy-MM-dd HH:mm:ss,fff", null)
Но я получаю исключение
System.FormatException: 'String was not recognized as a valid DateTime.'
Думаю есть .
, а не ,
Ага. Почему вы думаете, что «01 ноября» можно разобрать с помощью «yyyy-MM», просто для начала? А где твой час, минута и т. д.
Возможный дубликат Разбор даты с названием месяца в C# DateTime
Похоже, вы работаете с excel, в котором миллисекунды разделяются запятой. Попробуйте заменить запятую точкой, а затем повторите попытку.
Строка не была распознана как допустимый DateTime. ' @dimitry bychenko
Попробуйте другой формат:
var date = DateTime.ParseExact("01 Nov 2018 10:50", "dd MMM yyyy HH:mm")
Получив объект date
, вы можете преобразовать его в нужный формат:
date.ToString("yyyy-MM-dd HH:mm:ss,fff");
ParseExact
ожидает определения формата, соответствующего вашему вводу в качестве второго параметра.
Определение формата, которое соответствует вашему вводу, - "dd MMM yyyy HH:mm"
.
Обратитесь к Строки настраиваемого формата даты и времени для правильных определений формата.
Когда вы используете ParseExact
, вы должны передать точный формат, который вы хотите проанализировать, во втором параметре метода. Вы устанавливаете совершенно другой формат для метода ParseExact
. Попробуй это:
DateTime.ParseExact("01 Nov 2018 10:50", "dd MMM yyyy HH:mm", null)
У вас есть полная ссылка здесь: https://docs.microsoft.com/en-us/dotnet/api/system.datetime.parseexact?view=netframework-4.7.2
Как вы думаете, что означает эта строка формата (yyyy-MM ...)? Пожалуйста, обратитесь к документация