2013-08-28 67 views
0

當我改變系統日期格式dd/mm/yyyy,Web應用程序拋出的格式錯誤,這裏連接錯誤,日期時間解析拋出格式異常錯誤

enter image description here

如果系統有默認的日期格式,其工作正常。我試圖格式化字符串,但它也沒有工作。請幫我解決問題。

EDITED

這裏是代碼提高例外

cmd.Parameters.Add("@createdon", SqlDbType.DateTime).Value = DateTime.Parse(createdon); 
+0

更好的郵政編碼,避免放圖像。順便說一句'''表示幾分鐘而不是幾個月。 'MM'用了幾個月。使用'TryParseExact'而不是解析,因爲它是特定文化的 – wudzik

+0

您可以請發佈導致異常的行嗎? – shahkalpesh

+1

代碼中沒有錯誤,存在文化問題,請嘗試使用指定格式爲「dd/MM/yyyy」的'TryParseExact' http://msdn.microsoft.com/en-us/library/h9b85w22.aspx – wudzik

回答

1

當使用DateTime.Parse(),如果你想使用除程序下運行的文化以外的格式解析日期,您需要指定一個IFormatProvider作爲第二個參數來指定您期望的傳入日期格式。

例子:

cmd.Parameters.Add("@createdon", SqlDbType.DateTime).Value 
    = DateTime.Parse(createdon, new CultureInfo("en-US", true)); 

這將解析日期在dd/MM/yyyy格式,爲美國的默認格式。

+1

也值得注意的是,如果你有一個嚴格的格式要遵守 – Lummo

+0

@ V4Vendetta,那麼你可以使用DateTime.ParseExact,我在一般的理解,而不是特定於.NET的格式字符串。但好點,我修好了。 – richardtallent

+0

我已將代碼修改爲「DateTime.ParseExact(createdon,」d「,new CultureInfo(」en-US「,true));」但現在出現錯誤「作業註冊錯誤:日曆System.Globalization.GregorianCalendar中不支持該字符串表示的DateTime。」 –

0

通過糾正代碼解決了問題,

cmd.Parameters.Add("@createdon", SqlDbType.DateTime).Value = DateTime.ParseExact(createdon, "MM/dd/yyyy", CultureInfo.InvariantCulture); 

所以其工作的任何系統日期時間設置,謝謝大家。