#c# #datetime
#c# #дата-время
Вопрос:
Я пытаюсь проанализировать дату из строки, отформатированной следующим образом, "17/9/2020, 13:00:00"
как допустимый DateTime
объект, но после попытки использовать .ParseExact
и установки шаблона даты я получаю ошибку:
Строка
'17/9/2020, 13:00:00'
не была признана допустимойDateTime
..
С помощью .ParseExact
я пытаюсь сделать следующее:
DateTime.ParseExact(quando.quando, "dd/MM/yyy, HH:mm:ss", null)
Комментарии:
1. Ваша строка формата имеет
MM
, что означает, что она ожидает двухзначный месяц. «9» содержит только одну цифру. Я подозреваю, что вы хотитеM
вместоMM
— и, вероятно,d
вместоdd
тоже. Хотя, вероятно , вы этого хотитеyyyy
. (Я сомневаюсь, что у вас есть какие-либо даты до 1000 года.)2. 99,9% вам нужно
yyyy
3. @JonSkeet отсутствие
y
было синтаксической ошибкой, спасибо, что сообщили мне, на самом деле мне пришлось использовать singled
, как вы предлагали, поскольку в такие дни, как 8 сентября, служба передавалась8/9/2020
вместо 08
Ответ №1:
у вас 1 M
слишком много и 1 y
слишком мало:
DateTime.ParseExact("17/9/2020, 13:00:00", "dd/M/yyyy, HH:mm:ss", null)
формат MM
ожидает ввода всегда двух цифр для месяца, такого как 09
(сентябрь)
Если вы возьмете только 1 M, он также проанализирует 2-значный месяц, например декабрь:
DateTime.ParseExact("17/12/2020, 13:00:00", "dd/M/yyyy, HH:mm:ss", null)
РЕДАКТИРОВАТЬ: взяв это из комментария Джона Скитса: вероятно, вам также следует использовать один d
в течение нескольких дней, поскольку ваша строка даты, скорее всего, будет иметь следующий формат "7/9/2020, 13:00:00"
.
DateTime.ParseExact("7/9/2020, 13:00:00", "dd/M/yyyy, HH:mm:ss", null)
Комментарии:
1. будет ли она действительной в любом случае, если строка будет,
17/10/2020
если я использую singleM
?2. @KasperJuner Да, все будет в порядке.
3. @KasperJuner да, это будет, но это не работает так с цифрами года 😉 если у вас есть 4, вы должны указать также 4 раза
y
4. отсутствие
y
было синтаксической ошибкой, думал, я ее вставил. в любом случае, я не знал о singleM
, который тоже разбирал две цифры. я бы принял ваш ответ через несколько минут
Ответ №2:
Ваш формат неверен. Смотрите пример здесь:https://dotnetfiddle.net/2ppjvX
Вы должны использовать этот формат «дд / М / гггг, ЧЧ: мм: сс». «ММ» ожидает 2 цифры типа «09». Также требуется 4 символа «y».