2010-10-12 43 views
0

假設當前月份是「Oct」。我希望它會在本月添加一個月,即它會顯示「Nov」。爲此,我的代碼寫在下面,但它給出的例外是輸入字符串的格式不正確。如何在當月添加一個月?

那麼請更正代碼?

if (Convert.ToInt32(ddlMonth.SelectedIndex) <= Convert.ToInt32(DateTime.Now.AddMonths(1).ToString())) 
      { 
       TotalBalanceUptoSelectedPreviousMonth(); 
      } 
+3

試着寫'DateTime.Now.AddMonths(1)的ToString()'來調試控制檯 - 你期望什麼? – Douglas 2010-10-12 13:06:03

+1

+1對於促進自我發現的評論 – 2010-10-12 13:06:38

回答

4

這也許應該工作:

if (Convert.ToInt32(ddlMonth.SelectedIndex) 
    <= Convert.ToInt32(DateTime.Now.AddMonths(1).ToString("M"))) 

    TotalBalanceUptoSelectedPreviousMonth(); 

但是,它看起來像這樣簡單:

if (Convert.ToInt32(ddlMonth.SelectedIndex) <= DateTime.Now.AddMonths(1).Month) 
    Total...(); 
+1

如果是12月,則DateTime.Now.AddMonths(1).Month返回1,因爲月份已更改爲1月,而DateTime.Now.Month +1返回13. – 2010-10-12 13:14:27

+0

謝謝。我想我沒有想到這一點。我會相應地編輯。 – 2010-10-12 13:16:59

+0

好東西,反對票棄權。 – 2010-10-12 13:37:20

2

我會去上肢體和說,這是你在找什麼:

if(ddlMonth.SelectedIndex <= DateTime.Now.AddMonths(1).Month) 
{ 
    TotalBalanceUptoSelectedPreviousMonth(); 
} 

,而不是領日期爲一個字符串,並將其轉換,爲什麼不使用Month DateTime結構(它已經是一個整數)的屬性?

(呵呵...和的SelectedIndex已經是整數以及,無需調用轉換)

1

您需要使用DateTime.Now.AddMonths(1).Month
此外,您不需要使用包裝在Convert.ToInt32方法中的ToString方法,因爲它已經是一個整數。

2
Convert.ToInt32(DateTime.Now.AddMonths(1).ToString()) 

可能會給出例外,因爲DateTime.Now.AddMonths(1).ToString()值不能轉換爲Int32。