C# 如何在c中使用DateTime获得下个月的相同时间和日期#

C# 如何在c中使用DateTime获得下个月的相同时间和日期#,c#,datetime,C#,Datetime,我有一个c#DateTime对象,需要将它增加一个月 例如: input output ------------------------------- Jan 12, 2005 Feb 12, 2005 Feb 28, 2009 Mar 28, 2009 Dec 31, 2009 Jan 31, 2010 Jan 29, 2000 Feb 29, 2000 Jan 29, 2100 Error: no Feb 29, 2100 最好的方法是什么

我有一个c#DateTime对象,需要将它增加一个月

例如:

input           output
-------------------------------
Jan 12, 2005    Feb 12, 2005
Feb 28, 2009    Mar 28, 2009
Dec 31, 2009    Jan 31, 2010
Jan 29, 2000    Feb 29, 2000
Jan 29, 2100    Error: no Feb 29, 2100
最好的方法是什么


我的第一个想法(除了一些内置代码)是用片段构建一个新的日期时间,然后自己处理滚动到年份的过程。下面是一个完整的程序,展示了问题中给出的示例。如果确实不应该这样调用,您可能希望在OneMonthAfter中使用异常

using System;
using System.Net;

public class Test
{
    static void Main(string[] args)
    {
        Check(new DateTime(2005, 1, 12));
        Check(new DateTime(2009, 2, 28));
        Check(new DateTime(2009, 12, 31));
        Check(new DateTime(2000, 1, 29));
        Check(new DateTime(2100, 1, 29));
    }

    static void Check(DateTime date)
    {
        DateTime? next = OneMonthAfter(date);
        Console.WriteLine("{0} {1}", date,
                          next == null ? (object) "Error" : next);
    }

    static DateTime? OneMonthAfter(DateTime date)
    {
        DateTime ret = date.AddMonths(1);
        if (ret.Day != date.Day)
        {
            // Or throw an exception
            return null;
        }
        return ret;
    }
}
这对我很有用:

    DateTime d = DateTime.Now;
    d.AddMonths(1);

凯文获得了最快枪支奖(我在任何人评论之前就接受了这个奖项),结果是他的回答让我得到了我需要的信息,即使它不是完全正确的。这会让你在一个月的同一天,而不是同一天。因此,如果2017年6月的第一个星期一是2017年5月6日,这将返回7月的第一个星期三(2017年5月7日)。我怎么去七月的第一个星期一。
    DateTime d = DateTime.Now;
    d.AddMonths(1);