В Windows я хочу проанализировать a string
как a date
использование точной строки формата.
Например, учитывая строку
"6/12/2010"
и формат:
"M/d/yyyy"
я хочу преобразовать строку в дату при обеспечении, что дата соответствует формату.
я также должен смочь указать относящееся к двухтысячному году раздвижное окно, центр. Это означает, что, если 2-разрядный год (правильно) вводится, я укажу, что число лет в будущем полагал бы, что год. например:
Two-digit Year Pivot Four-digit year
============== ===== ===============
30 +0 1929
30 +18 1929
30 +19 1929
30 +20 2029
30 +21 2029
30 +100 2029
.NET уже обеспечивает a DateTime.ParseExact
функция, которая выполняет почти точно, в чем я нуждаюсь:
date = DateTime.ParseExact("6/12/2010",
DateTimeFormatInfo.ShortDatePattern,
Thread.CurrentThread.CurrentCulture);
Кроме я не могу сказать этому 100-летнее значение центра.
Больше примеров:
String Format Specifier Date
"6/7/2029" "M/d/yyyy" 6/7/2029
"6/7/29" "M/d/yyyy" (invalid, year too short)
"6/7/29" "M/d/yy" 6/7/1929 (+0 pivot)
"6/7/29" "M/d/yy" 6/7/2029 (+100 pivot
"6/7/29" "M/d/yy" 6/7/2029 (+50 pivot)
"6/7/29" "M/d/yy" 6/7/2029
"6/7/2029" "M.d.yyyy" (invalid, incorrect separators)
"6.7.2029" "M.d.yyyy" 6/7/2029
"6.7.2029" "M-d-yyyy" (invalid, incorrect separators)
"6/7/2029" "M/dd/yyyy" (invalid, days requires leading zero)
"6/07/2029" "M/dd/yyyy" (invalid, days requires leading zero)
"6/07/2029" "MM/dd/yyyy" (invalid, months requires leading zero)
"06/07/2029 "MM/dd/yyyy" 6/7/2029
"06/07/2029" "MM/d/yyyy" (invalid, days should not have leading zero)
"06/7/2029" "MM/d/yyyy" 6/7/2029
я знаю, что Windows не имеет встроенного API для преобразования строки в дату.
Есть ли любой установленный код там, который преобразует a string
к a date
использование спецификатора формата? Компьютеры были вокруг некоторое время теперь; кто-то уже, должно быть, решил эту проблему.
Вот список некоторых демонстрационных спецификаторов формата, которые Вы, как могли ожидать, будете видеть в Windows:
M/d/yyyy
M/d/yy
M/dd/yyyy
M/dd/yy
MM/d/yyyy
MM/d/yy
MM/dd/yyyy
MM/dd/yy
d/M/yyyy
d/M/yyy
d/MM/yyyy
d/MM/yy
dd/M/yyyy
dd/M/yy
dd/MM/yyyy
dd/MM/yy
yyyy/M/d
yy/M/d
yyyy/MM/d
yy/MM/d
yyyy/MM/dd
yy/MM/dd
dd MM yyyy
dd.MM.yyyy