2012-02-27 189 views
0

我想計算表單日期和兩個日期之間的日期差異。如果日期差異爲正數,則使用時間跨度計算兩個日期之間的差異意味着它輸入另一個過程落差意味着它返回錯誤消息。兩個日期之間的日期差異

我的部分碼是這裏..

TimeSpan span = Convert.ToDateTime(txtenddate.Text).Subtract(Convert.ToDateTime(txtstartdate.Text)); 
     int formatted = span.Days; 
     if (formatted < 1) 
     { 
      ScriptManager.RegisterStartupScript(this, this.GetType(), "temp", "<script language='javascript'>alert('Invalid date difference ');</script>", false); 
     } 

在上面的代碼輸入是結束日期:30-01-2004開始日期:2002年1月2日

但它返回錯誤消息:字符串未被識別爲有效的日期時間。

請給我一個解決方案與出改變日期格式來解決這個...

+1

嘗試使用'DateTime.ParseExact',而不是'Convert.ToDateTime' – V4Vendetta 2012-02-27 05:47:51

回答

2

你應該使用ParseExact獲取相關DateTime

TimeSpan ts = DateTime.ParseExact("30-01-2004", "dd-MM-yyyy", System.Globalization.CultureInfo.InvariantCulture) 
        - DateTime.ParseExact("01-02-2002", "dd-MM-yyyy", System.Globalization.CultureInfo.InvariantCulture); 

在使用Convert.ToDateTime它調用DateTime.Parse將嘗試它在這種情況下,不支持你擁有的DateTime格式對應當前的文化背景的轉換,所以你應該依靠ParseExact,讓你知道字符串預期的格式,並在獲取結果時實現。

+0

謝謝你這麼多......它的做工精細.. – Fernando 2012-02-27 05:59:03

0

你的dateformat應該是這樣的。 StartDate = 1/2/2002和EndDate = 3/1/2004

1

您必須使用CultureInfo,也許默認CultureInfo不同於「en-GB」;

var cult = new System.Globalization.CultureInfo("en-GB"); 
TimeSpan span = Convert.ToDateTime("30-01-2004", cult).Subtract(Convert.ToDateTime("01-02-2002", cult));