我有一个ac#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
做这个的最好方式是什么.
我的第一个想法(除了一些内置的代码)是从片段构建一个新的DateTime并自己处理滚动到年份
这是一个完整的程序,显示问题中给出的示例.你可能想在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; } }