Проверка даты (високосный год или нет) перед вставкой в ​​базу данных

Когда мне нужно вставить дату в базу данных, мне нужно проверить 2 вещи:

  1. Если в этом месяце 31 день в случае, если был выбран 31 день
  2. Если выбран февраль, мне нужно проверить, високосный ли это год, если пользователь выбрал 29

В настоящее время я проверяю это, используя длинную функцию, заполненную if's и else's.

Есть ли в C# какой-либо метод, который может проверить дату, действительна она или нет, прежде чем я ее вставлю?


person Ali Bassam    schedule 15.06.2013    source источник


Ответы (3)


Проверка високосного года

static void Main(string[] args)
{
 try
 {
  Console.Write("Please Enter the Year: ");
  int year = int.Parse(Console.ReadLine());
  if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0))
      {
        Console.WriteLine("The year {0}, is a Leap Year", year);
       }
      else
       {
        Console.WriteLine("The year {0}, is not a Leap Year", year);
      }
  }
    catch (Exception ex)
{
  Console.WriteLine(ex.Message);
}
  Console.ReadLine(); 
}

или просто вы можете использовать

if (DateTime.IsLeapYear(year))
     {
         //your logic
     }
 else
    {
    }
person Shyam sundar shah    schedule 15.06.2013
comment
Для этого существует встроенная функциональность .net. msdn.microsoft.com/en-us/library/ - person Adriaan Stander; 15.06.2013

Если у вас есть три целых числа years, months и days, сначала убедитесь, что years находится между 1 и 9999, затем проверьте, что months находится между 1 и 12, и, наконец, проверьте, что days находится между 1 и DateTime.DaysInMonth(years, months).

Дополнение. Если это хранилище базы данных, в зависимости от конкретного типа столбца SQL диапазон допустимых лет может быть уже, например с 1753 по 9999. Так или иначе, так называемый «пролептический» григорианский календарь не является исторически корректным, это своего рода «экстраполяция».

person Jeppe Stig Nielsen    schedule 15.06.2013

Установка значения для месяца февраля с 28 или 29 в зависимости от того, является ли этот год високосным или нет.

if (currentDate.Month == 2 && DateTime.IsLeapYear(currentDate.Year))
{
     //your logic to work on february month
}
else
{

}
person Rajashekhar Reddy    schedule 25.10.2017