Проблема в том, что вы пытаетесь проанализировать что-то как дату / время и часовой пояс , но на самом деле вы предоставляете только смещение . Это означает, что Noda Time использует часовой пояс по умолчанию из «шаблона» в шаблоне, который является UT C. Затем он проверяет, что смещение в значении является действительным для локальной даты / времени в значении, в UT C ... которого никогда не будет, если оно не равно 0. Исключение пытается прояснить это:
Указанное смещение недопустимо для данной даты / времени. Анализируемое значение: '24/03/2020 13:44:58 +10'.
Полученное вами значение на самом деле не представляет "дату и время с часовым поясом" - оно представляет «дату и время со смещением UT C». В Noda Time это обрабатывается типом OffsetDateTime
. Просто используйте OffsetDateTimePattern
и все будет хорошо:
var pattern = OffsetDateTimePattern.CreateWithInvariantCulture("dd/MM/yyyy HH:mm:ss +o<HH>");
var dateString = "24/03/2020 13:44:58 +10";
var result = pattern.Parse(dateString);
Console.WriteLine(result.Value); // Successful :)