2009-11-16 54 views
0

下面的代码会产生一个错误,为什么?C#日期解析确切问题

string dateFormatString = "dd.MM.yyyy HH:mm:ss"; 
string properDate = DateTime.ParseExact(DateTime.Now.ToString() , dateFormatString , null).ToString() 

错误是:字符串不被识别为有效的日期和时间。

+0

@ ApoY2k,它可以... –

+1

你日期时间的确定的ToString()出来,在格式掩码显示完全一样? – flq

+1

你知道...如果它的工作,它将是相同的:DateTime.Now.ToString() –

回答

3

DateTime.Now.ToString()格式使用当前区域性的日期。您需要指定与ParseExact函数期望的格式相同的格式:DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss")

1
+0

确实非常有用,感谢发布,很好的参考资料,但并不完全解决我的问题。 –

+0

嗨JL - 这里要注意的唯一的事情是,你所传递的任何东西都应该是你想要解析的格式 - 你发送的日期时间的默认字符串表示与“dd.MM.yyyy HH:mm :ss“,而是它是”dd/MM/yyyy HH:mm:ss“斜线和点的差异即是。 – MSIL

0

你可以简单地做:

string dateFormatString = "dd/MM/yyyy HH:mm:ss"; 
string properDate = DateTime.Now.ToString(dateFormatString); 

编辑:根据您的意见,您要的格式到共同配合,在捷克共和国。您应该使用CultureInfo做这样做:

string properDate = DateTime.Now.ToString(new CultureInfo("cs-CZ")); 
0

您的当地文化是否写日期为“dd.MM.yyyy HH:mm:ss”?简单地说:如果日期的ToString()不产生这种布局,那么它不会干净地解析 - 而ParseExact而不是非常宽容。

我想知道,如果你真的想打电话:

string s = DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss");