📜  C#中的DateTime.AddYears()方法

📅  最后修改于: 2021-05-30 00:39:16             🧑  作者: Mango

此方法用于返回新的DateTime,该日期将指定的年数添加到此实例的值中。

句法:

public DateTime AddYears (int value);

在这里,是年数。参数可以为负或正。

返回值:该方法返回一个对象,其值是此实例表示的日期和时间与value表示的年数之和。

异常:如果生成的DateTime小于MinValue或大于MaxValue,则此方法将提供ArgumentOutOfRangeException。

下面的程序说明了DateTime.AddYears(Int32)方法的用法:

范例1:

// C# program to demonstrate the
// DateTime.AddYears(Int32) Method
using System;
using System.Globalization;
  
class GFG {
      
// Main Method
public static void Main()
{
      
    try {
          
        // creating object of DateTime
        DateTime date1 = new DateTime(2010, 1, 1,
                                        4, 0, 15);
                                          
        // adding the 8 Months
        // using AddYears() method;
        DateTime date2 = date1.AddYears(8);
          
        // Display the date1
        Console.WriteLine("DateTime before operation: "
                              + "{0:y} {0:dd}", date1);                             
                                
        // Display the date2
        Console.WriteLine("\nDateTime after operation: "
                              + "{0:y} {0:dd}", date2);
                                
    }
      
    catch (ArgumentOutOfRangeException e) 
    {
        Console.Write("Exception Thrown: ");
        Console.Write("{0}", e.GetType(), e.Message);
    }
}
}
输出:
DateTime before operation: 2010 January 01

DateTime after operation: 2018 January 01

示例2:对于ArgumentOutOfRangeException

// C# program to demonstrate the
// DateTime.AddYears(Int32) Method
using System;
using System.Globalization;
  
class GFG {
  
    // Main Method
    public static void Main()
    {
        try {
  
            // creating object of DateTime 
            // and initialize with MinValue
            DateTime date1 = DateTime.MaxValue;
  
            // Display the date1
            Console.WriteLine("DateTime before operation: "
                                  + "{0:y} {0:dd}", date1);
                                       
  
            // adding the TimeSpan of 8 Years
            // using AddYears() method;
            DateTime date2 = date1.AddYears(5);
  
            // Display the date2
            Console.WriteLine("DateTime before operation: "
                                  + "{0:y} {0:dd}", date2);
                                       
        }
  
        catch (ArgumentOutOfRangeException e) 
        {
            Console.WriteLine("\nThe resulting DateTime is "+
                      "greater than the DateTime.MaxValue ");
  
            Console.Write("Exception Thrown: ");
            Console.Write("{0}", e.GetType(), e.Message);
        }
    }
}
输出:
DateTime before operation: 9999 December 31

The resulting DateTime is greater than the DateTime.MaxValue 
Exception Thrown: System.ArgumentOutOfRangeException

笔记:

  • 此方法不会更改此DateTime对象的值。而是返回一个新的DateTime对象,该对象的值是此操作的结果。
  • 此方法在考虑leap年的情况下计算得出的年份。生成的DateTime对象的月份和时间部分与此实例相同。
  • 如果当前实例表示a年中的the日,则返回值取决于目标日期:
    • 如果value + DateTime.Year也是a年,则返回值表示该年的the日。例如,如果在2016年2月29日加上四年,则返回的日期是2020年2月29日。
    • 如果value + DateTime.Year不是a年,则返回值表示该年the日的前一天。例如,如果将一年添加到2016年2月29日,则返回的日期是2017年2月28日。

参考:

  • https://docs.microsoft.com/zh-cn/dotnet/api/system.datetime.addyears?view=netframework-4.7.2