Как определить, является ли значение допустимым форматом даты и времени или нет - PullRequest
0 голосов
/ 02 мая 2019

Я попытался разобрать строковые значения, такие как 2019-04-30T06:46:31.811:00, в DateTime с DateTime.ParseExact().Ни один шаблон, который я использовал, не подходит.

Я пришел к выводу, что :00 в конце строки даты и времени это недопустимый и ожидаемый шаблон, который будет представлять часовой пояс, как +05 или +05:00

Некоторые варианты шаблонов, которые я использовал:

"yyyy-MM-dd'T'HH:mm:ss.fffz"
"yyyy-MM-dd'T'HH:mm:ss.fffK"
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fff':'z"
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fff':'zz"
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fff':'Z"
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fff':'K"
"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fff':'ss"
"yyyy-MM-dd'T'HH:mm:ss.fff:zz"
"yyyy-MM-ddTHH:mm:ss.fff:zz"
"yyyy-MM-dd'T'HH:mm:ss.fff:zz"
"yyyy-MM-ddTHH:mm:ss.fff:zz"

1 Ответ

0 голосов
/ 02 мая 2019

Я использую этот формат (2012-09-30T23: 00: 00.0000000Z) и его работу, вы можете преобразовать эту строку в этот формат и попробовать это:

var date = DateTime.ParseExact("2012-09-30T23:00:00.0000000Z",
                                       "yyyy-MM-dd'T'HH:mm:ss.fffffff'Z'",
                                       CultureInfo.InvariantCulture,
                                       DateTimeStyles.AssumeUniversal |
                                       DateTimeStyles.AdjustToUniversal);
        Console.WriteLine(date);
...