Почему NodaTime.LocalDate.MinIsoValue имеет год "9999" - PullRequest
1 голос
/ 04 июля 2019

Статическое свойство NodaTime.LocalDate.MinIsoValue имеет значение 9999-01-01, тогда как я ожидал, что оно будет иметь то же значение, что и default(LocalDate), равное 0001-01-01.Есть ли причина для этого значения или это ошибка?

Я использую NodaTime версии 2.4.4.

1 Ответ

3 голосов
/ 04 июля 2019

Форматирование локальной даты с использованием шаблона «гг» или «гггг» выводит годы эры , а не год, который в данном случае равен -9998.LocalDate.MinIsoValue из эры BCE.Формат, который вы использовали, не включал в себя эру.Вы можете использовать "g" или "gg" в своем пользовательском формате, чтобы включить эру.

var def = default(LocalDate);
var min = LocalDate.MinIsoValue;
Console.WriteLine("def: " + def.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture));
Console.WriteLine("def with era: " + def.ToString("yyyy-MM-dd gg", CultureInfo.InvariantCulture));
Console.WriteLine("def.Year: " + def.Year);
Console.WriteLine("def.YearOfEra: " + def.YearOfEra);
Console.WriteLine("min: " + min.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture));
Console.WriteLine("min with era: " + min.ToString("yyyy-MM-dd gg", CultureInfo.InvariantCulture));
Console.WriteLine("min.Year: " + min.Year);
Console.WriteLine("min.YearOfEra: " + min.YearOfEra);
Console.WriteLine("min < def: " + (min < def));

def: 0001-01-01
def с эрой: 0001-01-01AD
def.Year: 1
def.YearOfEra: 1
min: 9999-01-01
min с эпохой: 9999-01-01 BC
min.Year: -9998
мин. Год выпуска: 9999
мин.

...