這裏有很多問題。首先,你永遠不想像你一樣重複使用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