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

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

此方法用于返回一个新的DateTime,它将指定的月份数添加到此实例的值。

句法:

public DateTime AddMonths (int months);

在这里,数是月数。 months参数可以是负数或正数。

返回值:该方法返回一个对象,该对象的值是此实例和months表示的日期和时间的总和。

异常:如果生成的DateTime小于MinValue或大于MaxValue, or月份小于-120,000或大于120,000,则此方法将引发ArgumentOutOfRangeException。

下面的程序说明了上述方法的用法:

范例1:

// C# program to demonstrate the
// DateTime.AddMonths(Int32) Method
using System;
  
class GFG {
  
// Main Method
public static void Main()
{
  
    // Creating a DateTime object
    DateTime d1 = new DateTime(2018, 4, 17);
  
    for (int i = 0; i <= 10; i++)
    {
  
        // using the method
        Console.WriteLine(d1.AddMonths(i).ToString("d"));
          
    }
      
    Console.WriteLine("In Leap Years:");
      
    // Creating a DateTime object
    // by taking a leap year
    // It is 31st March 2016
    DateTime d2 = new DateTime(2016, 03, 31);
      
    // taking a month value
    int m = 1;
      
    // using the method
    // Result will be 30 April 2016
    Console.WriteLine(d2.AddMonths(m).ToString("d"));
      
      
}
}

输出:

04/17/2018
05/17/2018
06/17/2018
07/17/2018
08/17/2018
09/17/2018
10/17/2018
11/17/2018
12/17/2018
01/17/2019
02/17/2019
In Leap Years:
04/30/2016

范例2:

// C# program to demonstrate the
// DateTime.AddMonths(Int32) Method
using System;
  
class GFG {
  
// Main Method
public static void Main()
{
  
    // Creating a DateTime object
    // taking MaxValue
    DateTime d1 = DateTime.MaxValue;
  
    // taking a month MaxValue
    int m = 12005;
  
    // using the method will 
    // give an runtime error
    // as months parameter is
    // greater than 12000
    Console.WriteLine(d1.AddMonths(m).ToString("d"));
}
}

运行时错误:

笔记:

  • 此方法不会更改此DateTime对象的值。而是返回一个新的DateTime对象,该对象的值是此操作的结果。
  • 这将考虑leap年和一个月中的天数来计算所得的月份和年份,然后调整所得的DateTime对象的日期部分。
  • 结果DateTime对象的时间部分与此实例相同。

参考:

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