2015-08-28 85 views
1

我目前有一個時間報告項目,您輸入該日期的日期和報告時間,(所有日期顯示併發送回後端以swedeish格式等yy-mm-dd) 但是,如果我的計算機上有另一種文化信息,如dd-mm-yyyy它會解析日期錯誤,並且不起作用。DateTime.TryParse其他文化信息

這是我的代碼

DateTime reportDate; 
if (!DateTime.TryParse(result, out reportDate)) 
{ 
    ModelState.AddModelError("Date", "Felaktikt datum"); 
} 

這將需要我yy-mm-dd和其解析到dd-mm-yyyy,因爲這就是我的電腦被設置爲。

+3

的第二個重載試「的所有日期都顯示在swedeish等格式YY-MM-DD發送回後端」 - 爲什麼?我建議你看看'DateTime.TryParseExact'並指定那裏的文化,如果你真的需要 - 但是使用人類文化日期格式進行機器對機器通信是一個非常糟糕的ida。 –

+0

DateTime.TryParseExact(結果,格式,新CultureInfo(「sv-SE」「,DateTimeStyles.None,out reportDate) – Viva

+0

因爲這是我被告知要做的事情,所以日期應該顯示爲yy-mm-dd。 –

回答

2

可以指定瑞典的文化是這樣的:

DateTime reportDate; 

if (!DateTime.TryParse(result, 
    System.Globalization.CultureInfo.GetCultureInfo("sv-SE"), 
    System.Globalization.DateTimeStyles.None, out reportDate)) 
{ 
    ModelState.AddModelError("Date", "Felaktikt datum"); 
} 
+0

reportDate仍然保存dd-mm-yyyy。 –

+3

reportDate是解析日期,因此您可以按照自己的喜好進行格式化。上面的代碼將解析「15-08-28」這樣的日期,並將其轉換爲正確的DateTime。 –

+0

已解決通過添加Thread.CurrentThread.CurrentCulture = new CultureInfo(「sv-SE」); –

2

DateTime.TryParse有一個額外的2個參數,第二個是IFormatProvider,你可以指定你希望它是代表其文化。在你的情況下,它是sv-SE這是瑞典。

DateTime.TryParse(
    result, 
    new CultureInfo("sv-SE"), 
    DateTimeStyles.None, 
    out reportDate 
); 
1

你可以用的TryParse方法

DateTime.TryParse(result, CultureInfo.CreateSpecificCulture("sv-SE"), DateTimeStyles.None, out reportDate)