Я пытаюсь читать даты в следующем формате, используя одну строку формата:DateTime.ParseExact для нетрадиционного лет
"1000.12.31"
"999.12.31"
"99.12.31"
Они будут соответствовать датам в годы 1000 AD, 999 AD и 99 ОБЪЯВЛЕНИЕ.
Я попытался следующие строки формата:
yyyy.M.d
. Это терпит неудачу на годы 999 и 99.
yy.M.d
. Это не подходит для 1000 и 999. Он также интерпретирует 99 как 1999.
Я собираюсь прибегнуть к разбору его вручную (это достаточно просто для этого), но мне любопытно, если что-то подобное возможно даже с DateTime.ParseExact
, или, возможно, с помощью другого встроенного метода?
Не работает ли 'y.M.d'? – leppie
«99.12.31» является двусмысленным для человека. * Никто не пойдет «ах, это, конечно, 99 год в царствование Маркуса Ульпиуса Нервы Траяна Августа». Каждый выбор 1999 года. Машина не улучшается. –
@leppie: нет, такой же результат, как 'yy.M.d' iirc. @Hans Мне, в этом контексте, это не двусмысленно. Я знаю, что я всегда хочу 99, чтобы быть 99, а не 1999, я просто не могу это указать. Как дни и месяцы, они могут быть двусмысленными (1/2, это первая или вторая половина?), Но если вы знаете, чего ожидать, вы можете указать это в строке формата. – Bubblewrap