这里有很多问题。首先,你永远不想像你一样重复使用DateTime.Now
。相反,
DateTime now = DateTime.Now;
然后使用now
。您这样做的原因是因为DateTime.Now
可能会在两次呼叫之间转移到新的一天,一个月或一年。
当然,这并不能解决您的问题。现在我们来解决这个问题。你都清楚地试图一个月增加now
,那么为什么不
DateTime dtmNextPayment = now.AddMonths(1);
需要注意的是now.AddMonths(1)
不发生变异now
这是非常重要的;这就是为什么您必须将其分配给DateTime
的新实例。
接下来,你的文章的原始版本有
DateTime dtmNextPayment = Convert.ToDateTime(DateTime.Now.AddMonths(1).Month.ToString() + "/" + DateTime.Now.Day.ToString() + "/" + DateTime.Now.Year.ToString());
当DateTime.Now
是2011年12月1日,这将产生
new DateTime(2011, 1, 1);
我怀疑是你想要什么。你明白为什么?
你试图在
new DateTime(2012, 2, 1)
编辑这个结果的日期是1月1日,2011年我怀疑这是你想要的大部分企业都还不到一个月,和一年账单提前。请停下来想一下。
此外,你会得到一个execption,例如,如果这一天是2011年1月31日,因为没有2011年2月31日(或2012年2月31日)对这一问题。这就是为什么你正在得到你现在得到的例外。明天(2011年2月1日)运行你的代码,这将是“很好”。
最后,不要做你正在做的事情,因为存在严重的文化问题。并非所有的文化格式都以您尝试设置格式的方式进行。
道德:DateTime
已经内置的方法已经过测试,并避免所有这些该死的问题。使用它们。任何时候,当你试图对几乎任何对象进行逻辑处理时,都会将其中的一部分转换为字符串,然后再转换回来,从而引发严重的不良代码异味。
这是一个非常糟糕的例子。其实我有不同的情况下不同的情况。我的意图是转换成月/日/年的形式。 – Ram 2011-01-31 19:00:04
如果您不帮助我们帮助您,我们无法帮助您。给我们一个很好的例子来解决问题。 – jason 2011-01-31 19:03:41