Подтвердить что ты не робот

Проверить високосный год на С#

Я хочу добавить дату записи + 1 год в столбец с датой окончания.

Если дата ввода в високосный год, мне нужно добавить 364 дня, если не 365 дней.

Есть ли способ проверить это в С#, используя текущий год datetime и манипулировать прыжком yr/not, а затем добавить дни.

Спасибо.

4b9b3361

Ответ 1

Вы можете использовать метод DateTime.IsLeapYear.

Но для обработки вам действительно не нужно использовать этот метод. DateTime.AddYears учитывает високосные годы.

var leapYear = new DateTime(2000, 2, 29);
Console.WriteLine("Is 2000 a leap year? {0}", DateTime.IsLeapYear(leapYear.Year)); // 2000 is a leap year
Console.WriteLine("One year added to {0} is {1}", leapYear, leapYear.AddYears(1)); // 2000-02-29 plus 1 year is 2001-02-28

Ответ 2

var dateStart = new DateTime(2010,1,10);  // Some date to check
var newDate = DateTime.IsLeapYear(dateStart.Year) ? dateStart.AddDays(365) : dateStart.AddDays(364);
// or 
var newDate = dateStart.AddYears(1).AddDays(-1);

Ответ 3

Я нахожу это опрятным в качестве метода расширения:

public static class DateTimeExtensions
{
    public static bool IsLeapYear(this DateTime source)
    {
        return DateTime.IsLeapYear(source.Year);
    }
}