C # Ввод 2-значных дат в поле даты по умолчанию равен 19 против 20 для дат после 2020 года

#c# #date #field

#c# #Дата #поле

Вопрос:

Таким образом, пользователь вводит 20 в поле даты, дата заполняется до 2020 года. Введите 21, и дата заполнится до 1921. Это происходит для любых дат после 2020 года. Есть предложения?

Ответ №1:

Год, в котором «сокращается» двухзначный год Calendar.TwoDigitYearMax .

Дополнительная информация о документации: https://docs.microsoft.com/en-us/dotnet/api/system.globalization.calendar.twodigityearmax

Значение изначально берется из системных настроек культуры, но вы можете изменить его (или создать свой собственный язык)

Ответ №2:

Вот полный пример Calendar.TwoDigitYearMax :

 string dateString = "13 Jan 21"; //from user input
DateTime resu<
CultureInfo culture = new CultureInfo("en-US");
DateTime.TryParse(dateString, culture, DateTimeStyles.None, out result);
Console.WriteLine(result.ToLongDateString());

culture.Calendar.TwoDigitYearMax = 2099;

DateTime.TryParse(dateString, culture, DateTimeStyles.None, out result);
Console.WriteLine(result.ToLongDateString());
 

Это должно дать:

 13. januar 2021
13. januar 2021
 

Проверьте источник.