我有一个webservice方法,从sql获取的数据格式为2012-11-18 11:21:03,当我将其保存到C#字符串时,它变成了这种格式:18.11.2012 11:21:03。我该如何将其改回SQL格式的2012-11-18 11:21:03?
将其再次解析为dateTime格式
DateTime myTime = DateTime.Parse(myString);
并转化为一个合适的字符串
myTime.ToString("yyyy-MM-dd HH:mm:ss");
或者将其读取为日期时间并消除中间人。
您可以使用格式字符串"u"
来获取通用可排序的字符串格式(类似于SQL服务器使用的格式),例如:
var dateTimeString = String.Format("{0:u}", yourDateTime);
只需运行以下代码:
var newDateTime = oldDateTime.Date.ToString("yyyy-MM-dd HH:mm:ss");
只需将其转换回SQL格式的DATETIME
字符串日期的问题在于它们是模棱两可的,格式可能因所处地区或本地机器设置而异。你可能会假设一个日期字符串是yyyy-mm-dd,但如果它实际上是yyyy-dd-mm呢?有些日期看起来可以工作,而有些则无效。
换句话说,2013-02-10是二月十日还是十月二日?如果只是一个字符串,你无法确定作者的意图。
如#Haedrian所建议的,最好将其存储为DateTime C#对象,而不是字符串。这样它就永远不会有歧义,并且您可以访问各种特定于日期的函数。如果必须存储为字符串,则可以像上面那样转换回日期或使用
DateTime.TryParse(datestring, out dateVariable);
这个代码不会因为格式无效而抛出异常。这取决于你是否想要异常!
另外,如果你必须使用字符串,请使用三个字符的月份字符串,这样可以消除歧义,例如:
"dd-MMM-yy hh:mm tt"