我想將輸入日期+ 1年添加到名爲結束日期的列中。在C中檢查閏年#
如果入境日期閏年,我需要添加364天,如果不是365天。
有沒有辦法在c#中使用當前日期時間的年份來檢查此問題&操縱閏年/不是,然後添加日期。
謝謝。
我想將輸入日期+ 1年添加到名爲結束日期的列中。在C中檢查閏年#
如果入境日期閏年,我需要添加364天,如果不是365天。
有沒有辦法在c#中使用當前日期時間的年份來檢查此問題&操縱閏年/不是,然後添加日期。
謝謝。
您可以使用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
謝謝,我正打算輸入。我會將其標記爲已接受的答案。 – Sharpeye500 2010-11-08 21:49:31
謝謝,但我在代碼中使用DateTime.Now.AddYears(1)代碼,它是1行代碼,更符合邏輯。 – Sharpeye500 2010-11-08 22:44:27
@ Sharpeye500 - 當然,在你的情況下,AddYears比IsLeapYear更好。我在答案中也包括了這一點。雖然Jon B的評論一分鐘後,真的:) – Patko 2010-11-08 23:04:21
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);
我覺得這更整潔作爲一個擴展的方法:
public static class DateTimeExtensions
{
public static bool IsLeapYear(this DateTime source)
{
return DateTime.IsLeapYear(source.Year);
}
}
你就不能使用'DateTime.AddYears(1)'? – 2010-11-08 21:50:29
如果是閏年,您應該添加366天:) – 2010-11-08 21:53:03
或者365,如果日期是過去2月29日。但是.AddYears(1)是更加無憂無慮的版本。 – TeaDrivenDev 2010-11-08 21:54:21