2011-07-13 160 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)