2012-10-04 55 views
3

一個字符串的值「DD/MM/YYYY」格式,如「04/10/2012」 。這應該轉換爲日期w.r.t 當前文化OS如何與格式「DD/MM/YYYY」轉換日期字符串到OS當前區域性的日期格式

我曾嘗試以下字符串韓國作爲當前文化OS的其中日期格式爲YYYY-MM-DD,我的代碼是沒有得到正確的月份值,它與日互換月份值:

輸入: 「04/10/2012」 輸出:2012-04-10

代碼:

DateTime DT; 
string dt = "04/10/2012"; 

DateTimeFormatInfo DateInfo = CultureInfo.CurrentCulture.DateTimeFormat; 
DT = Convert.ToDateTime(String.Format ("{0:"+DateInfo .ShortDatePattern +"}", dt.Trim()), CultureInfo .CurrentCulture); 
MessageBox.Show("Date: " + DT.ToShortDateString()); 

我該如何解決這個問題?

回答

4

它看起來像你需要用固定格式解析它,我認爲你目前正在用「dd/MM/yyyy」以外的格式解析它,並且因爲日期不明確(如在,月和日期可以互換而不會導致無效的日期),格式只是簡單地切換月份和日期值。當你去輸出它時,它看起來相反。

使用DateTime.ParseExact強制解析格式,然後使用上DateTime內置的電流的文化敏感字符串輸出方法來獲取一個格式化字符串:

var date = DateTime.ParseExact("04/10/2012", "dd/MM/yyyy", CultureInfo.InvariantCulture); 

MessageBox.Show("Date: " + date.ToShortDateString()); // Assumes current culture is controlling format 
2

由於您輸入的字符串是在一個固定的格式,如果字符串的格式爲dd/MM/yyyy,那麼你使用DateTime.ParseExact與specifi

DateTime.ParseExact(dt, "dd/MM/yyyy", CultureInfo.InvariantCulture); 
1

:在格式應該分析它編輯格式:

DateTime.ParseExact(dt, "dd/MM/yyyy", CultureInfo.InvariantCulture); 

任何東西都不會嘗試根據當前區域性的規則的解釋字符串 - 這,因爲你已經發現,將失敗。

0

爲什麼不使用ToShortDateTimeString()

相關問題