SQL日期时间转换为C#字符串并再次转换为SQL日期时间

3

我有一个webservice方法,从sql获取的数据格式为2012-11-18 11:21:03,当我将其保存到C#字符串时,它变成了这种格式:18.11.2012 11:21:03。我该如何将其改回SQL格式的2012-11-18 11:21:03

4个回答

11

将其再次解析为dateTime格式

DateTime myTime = DateTime.Parse(myString);

并转化为一个合适的字符串

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

或者将其读取为日期时间并消除中间人。


我会使用 DateTime myTime = DateTime.ParseExact(myString, "yyyy-MM-dd HH:mm:ss", CultureInfo.CurrentCulture); - Ethan Li

2

您可以使用格式字符串"u"来获取通用可排序的字符串格式(类似于SQL服务器使用的格式),例如:

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

包括一个“Z”,例如'2017-02-19 12:21:02Z'。 - RaoulRubin

0

只需运行以下代码:

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

只需将其转换回SQL格式的DATETIME


这样做将剥离掉“oldDateTime”的时间组件,并且仅在“oldDateTime”最初就是日期时间的情况下才有效。 - Haedrian

0

字符串日期的问题在于它们是模棱两可的,格式可能因所处地区或本地机器设置而异。你可能会假设一个日期字符串是yyyy-mm-dd,但如果它实际上是yyyy-dd-mm呢?有些日期看起来可以工作,而有些则无效。

换句话说,2013-02-10是二月十日还是十月二日?如果只是一个字符串,你无法确定作者的意图。

如#Haedrian所建议的,最好将其存储为DateTime C#对象,而不是字符串。这样它就永远不会有歧义,并且您可以访问各种特定于日期的函数。如果必须存储为字符串,则可以像上面那样转换回日期或使用

DateTime.TryParse(datestring, out dateVariable);

这个代码不会因为格式无效而抛出异常。这取决于你是否想要异常!

另外,如果你必须使用字符串,请使用三个字符的月份字符串,这样可以消除歧义,例如:

"dd-MMM-yy hh:mm tt"

如果只是一个字符串,你无法确定确切的意图。如果有一种方法可以精确解析所需的格式就好了。 - Conrad Frix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接