Я пытаюсь читать в виде файла с очень старым форматированием.Анализ 2-значных дат
В нем формат даты указан в формате yymmdd, где 2-значный год в диапазоне [00, 59] считается находящимся в 21-м веке и годом в диапазоне [60, 99 ] считается в 20-м веке, так что 59 представляет год 2059 и 60 представляет 1960 год.
Как я могу разобрать это в DateTime
на C#?
Я пробовал делать:
string str = ReadDateFromFile();
DateTime dt;
DateTime.TryParseExact(str, "yyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt);
Но правила года 2-значными по умолчанию рассматривать значения в диапазоне [00, 29] в 21-м века и значение в диапазоне [30, 99], а 20 века.
Есть ли способ изменить это поведение, чтобы делать то, что я хочу, или есть ли другой способ, который я мог бы использовать?
Добавьте строку после 'TryParseExact', чтобы вычесть 100 лет, если она находится между 2030 и 2059 годами? –
Вы можете изменить строку с двухзначного года на 4-значный год, используя все правила, которые вы решите, прежде чем передавать их на «TryParseExact». –
. Подумайте о том, как построить свой собственный класс «Календарь», используя шаблон по умолчанию, и изменить [Calendar.TwoDigitYearMax] (свойство https://msdn.microsoft.com/en-us/library/system.globalization.calendar.twodigityearmax (v = vs.110) .aspx). –