2013-04-09 93 views

回答

10

解析成一个DateTime再次

DateTime myTime = DateTime.Parse(myString); 

,并返回到正确的串

myTime.ToString("yyyy-MM-dd HH:mm:ss"); 

或者只是读入一个datetime和切出的中间人。

+0

我想使用的DateTime数值指明MyTime = DateTime.ParseExact(myString的, “YYYY-MM-DD HH:MM:SS”,CultureInfo.CurrentCulture); – 2013-04-09 21:47:25

1

可以使用格式字符串"u"这样得到普遍排序字符串格式(它看起来像SQL Server所使用的):

var dateTimeString = String.Format("{0:u}", yourDateTime); 
+0

包含一个“Z”,例如'2017-02-19 12:21:02Z' – RaoulRubin 2017-02-21 17:23:05

0

只需运行下面的代码,

var newDateTime = oldDateTime.Date.ToString("yyyy-MM-dd HH:mm:ss"); 

它只是将其转换回SQL Format DATETIME

+0

这样做会去掉'oldDateTime'的时​​间部分,并且只有在oldDateTIme已经是以 – Haedrian 2013-04-09 19:46:39

0

日期作为字符串的麻烦是他们是模棱两可的,格式可以变化bas编辑你在世界上的位置,甚至是本地机器设置。你可能会认为日期字符串是yyyy-mm-dd,但是如果它实际上是yyyy-dd-mm呢?有些日期似乎有效,有些日期无效。

也就是说2013-02-10是2月10日还是10月2日?如果它只是一个字符串,你无法确切地知道是什么意图。

按照#Haedrian的建议,您最好的选择是存储在DateTime C#对象中,而不是字符串。这样它永远不会含糊不清,你可以访问各种日期特定的功能。如果您必须存储为一个字符串,您可以按上述转换回一个日期或使用

DateTime.TryParse(datestring, out dateVariable); 

,不会抛出异常的无效格式。取决于你是否想要例外!

此外,我会建议如果你必须使用字符串在字符串中使用3个字符的月份,这再次消除了模糊性,例如,

"dd-MMM-yy hh:mm tt" 
+0

开始的日期时间时才起作用* If它只是一个字符串,你无法确切地知道是什么意图。*如果只有一种方法** ParseExact ** ly你想要的格式 – 2013-04-09 19:49:09