2011-07-13 165 views
2

我在格式鑄造字符串爲DateTime

字符串2011年7月13日下午1:07

我要投它作爲

dd/MM/yyyy HH:mm tt 

    e.g: 13/7/2011 11:49:00 AM //string=Jul 13 2011 1:07PM 

我使用下面的代碼迄今爲止。

DateTime date = Convert.ToDateTime(Convert.ToDateTime(myDateString).ToString("dd/MM/yyyy HH:mm:ss")); 

這工作得很好,如果我的天我的字符串小於13

Jul 12 2011 1:07PM //this will cast to desire format fine! 

    Jul 13 2011 1:07PM //gives error String was not recognized as a valid DateTime. 

據我所知,它正在一天,一個月,但我不能找到一種方法來投它渴望格式。

+1

你爲什麼要轉換兩次?爲了您的目的,最好嘗試一下DateTime.Parse()。 – Krumelur

+0

我不會完全摒棄你想達到的目標。你想投擲原始字符串(即2011年7月13日1:07 PM)datetime? –

+0

這是一個轉換,*不*轉換... –

回答

1

你應該用你使用ToString()方法DateTime.TryParse

DateTime dt ; 
if (DateTime.TryParse("Jul 13 2011 1:07PM",out dt)) 
    MessageBox.Show("Converted to Date object"); 

帖子以獲得所需的輸出

dt.ToString("dd/MM/yyyy HH:mm") 
+0

'Convert.ToDateTime'與'DateTime.Parse'相同。 – Sjoerd

1

首先,串Jul 13 2011 1:07PM轉換爲日期:

var date = Convert.ToDateTime("Jul 13 2011 1:07PM"); 

然後,將其轉換格式的字符串你喜歡:

var dateText = date.ToString("dd/MM/yyyy HH:mm:ss"); 
+0

謝謝! 我測試了所有的解決方案,他們給出了同樣的例外。 你能指出我的代碼有問題嗎! –

+1

在這種情況下,代碼中的問題是第二次Convert.ToDateTime,因爲它預期爲「MM/dd/yyyy HH:mm:ss」(英文文化中的默認格式),並得到「dd/MM/yyyy HH:mm:ss」 –

+0

但無論如何,如果你知道確切的輸入格式,你應該使用(如果僅僅是因爲速度)DateTime.ParseExact和我或Scorpi0指出。 –

1

我相信你正在尋找這樣的:

Date.ParseExact("Jul 13 2011 1:07PM", "MMM d yyyy h:mmtt", Globalization.CultureInfo.InvariantCulture)