Это первый раз, когда я выбрал NodaTime за долгое время.
Хотя в этой области есть некоторые вопросы, я просто хотел, чтобы этот вопрос был сосредоточен на синтаксическом анализе строк для некоторых объектов даты и времени с использованием NodaTime. Таким образом, я рассматриваю работу со строками, содержащими GMT и BST соответственно.
Любопытно, что здесь есть кое-что о BST, имеющее два разных значения. В нашей устаревшей системе Java мы используем BST и GMT во многих пользовательском коде.
Итак, я собрал несколько быстрых и грязных тестов, чтобы начать. Последний тестовый случай не проходит.
[Theory]
[InlineData("2021-03-28 00:00:00 GMT")]
[InlineData("2021-03-28 02:00:00 GMT")]
[InlineData("2021-03-28 02:00:00 BST")]
public void parsing_dates(string dateString)
{
ZonedDateTimePattern pattern = ZonedDateTimePattern.CreateWithInvariantCulture("yyyy'-'MM'-'dd HH':'mm':'ss z", DateTimeZoneProviders.Tzdb);
ParseResult<ZonedDateTime> parseResult = pattern.Parse(dateString);
if (!parseResult.Success)
{
testOutputHelper.WriteLine(parseResult.Exception.ToString());
}
else
{
testOutputHelper.WriteLine(parseResult.Value.ToInstant().ToString());
}
parseResult.Success.Should().BeTrue();
}
Исключение со строкой 2021-03-28 02:00:00 BST:
NodaTime.Text.UnparsableValueException: The specified time zone identifier is not recognized. Value being parsed: '2021-03-28 02:00:00 ^BST'. (^ indicates error position.)
Я устало просматривал документы и не могу найти то, что ищу.
https://nodatime.org/3.0.x/userguide/text
https://nodatime.org/3.0.x/userguide/zoneddatetime-patterns
Есть ли способ разобрать GMT и BST на ZonedDateTime?