У нас есть серверная часть Scala / Java, которая генерирует эквивалент DateTime.MaxValue
в .NET.
Мне прислали следующую дату в виде строки "9999-12-31T23: 59: 59.999999999Z".
Если я использовал DateTime.TryParse("9999-12-31T23:59:59.999999999Z", out var dateTime)
, то выдается ArgumentOutOfRangeException
(добавленное или вычтенное значение приводит к непредставляемому имени DateTime.Parameter: value).
Я не ожидал этого, так как я звонил Try Parse.Возможно, возвращение false было бы более интуитивно понятным?
Если я уменьшу год, я вижу, что .NET переносит дату на следующий день, что, очевидно, не будет работать с максимальной датой / временем!
DateTime.TryParse("9998-12-31T23:59:59.999999999Z", out var dateTime);
dateTime.ToString().Dump();
Выходы: 01/01/9999 00: 00: 00
Если я уменьшу точность мс на 2, то это сработает:
DateTime.TryParse("9998-12-31T23:59:59.9999999Z", out var dateTime);
dateTime.ToString().Dump();
Выходы:31/12/9998 23: 59: 59
Это действительно похоже на ошибку в .NET?Это ожидаемое поведение?