2012-09-07 57 views
0

我的電腦中安裝了Window 7。問題是如果計算機重新啓動,系統日期格式會有所改變。我需要修改日期格式,但不知道如何。我有應用程序內置mvc 3,並有字符串日期時間轉換的代碼。如果系統日期時間格式與字符串不匹配,則會顯示錯誤 string is not in proper format轉換爲查找系統日期時間的日期時間。唯一的例外是拋出下面的代碼:系統日期時間格式已更改

DateTime startDate = Convert.ToDateTime(start); 

其中,

string start = sundayOfLastWeek.ToString("MM/dd/yyyy HH:mm:ss"); 

或者,是否有任何的替代品,這樣我可以在工作的所有的時間,儘管系統日期時間更改代碼。

回答

1

使用。 ToString(CultureInfo.InvariantCulture)和Parse(value,CultureInfo.InvariantCulture)值爲persistance。如果您爲顯示目的渲染值,則只需省略CultureInfo。對於某些特定的數據格式,可能存在特殊的格式規則 - 請遵循它們。

恢復您的數據使用ParseExact。

4

使用DateTime.ParseExact與格式"MM/dd/yyyy HH:mm:ss"

startDate = DateTime.ParseExact(start, 
           "MM/dd/yyyy HH:mm:ss", 
           CultureInfo.InvariantCulture); 

編輯:基於評論來自@約翰佑

可以傳遞字符串數組來DateTime.Parse像:

string[] dateFormats = new string[] { "MM/dd/yyyy HH:mm:ss", "dd/MM/yyyy HH:mm:ss", "d/MM/yyyy" }; 
DateTime startDate = DateTime.ParseExact(start, 
             dateFormats, 
             CultureInfo.InvariantCulture, 
             DateTimeStyles.None); 
+0

先生,如果日期時間的格式不是'MM/dd/yyyy HH:mm:ss'?會發生什麼? –

+1

它會拋出一個異常,以避免您可以在字符串數組中添加可能/預期的日期時間格式並將其傳遞給方法 – Habib

+0

它會顯示錯誤說明ParseExact:對於具有兩個參數的方法沒有重載。 – CodeManiac

0

由於哈比卜已經回答:

//Add any format you want or expect 
string[] formats = { "MM/dd/yyyy HH:mm:ss", "dd.MM.yyyy HH:mm:ss" }; 
DateTime startDate = DateTime.ParseExact(start, formats, 
       System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None); 

它應該幫助。