2016-03-08 193 views

回答

4

使用DateTime.TryParse

var dateString = "Oct 21 2014 1:00 AM"; 
DateTime result; 
DateTime.TryParse(dateString, out result); 
var sqlDate = result.ToString("yyyy-MM-dd HH:mm:ss"); 
0

请参阅答案这里。

Converting a String to DateTime

DateTime.ParseExact可以为你工作,以日期时间转换,然后你可以使用ToString(<format>)与格式转换所需的字符串。

+0

'DateTime.ParseExact'只有当你事先知道确切的格式时才有用,如果你不这样做 - 它会失败。另外,假设提供的字符串是数据总是被接收的方式,即使'TryParse()'也是多余的,他应该使用'Parse()'insead。 'ParseExact'只在格式不常见或文化变体不同时有用,不会用任何其他方法解析。在使用'.ParseExact()'之前,总是使用'.Parse()'或'.TryParse()'。 – Gabe

2

我认为,如果您使用ADO.NET与您的SQL Server进行通信,则不应使用格式化的日期字符串作为查询参数。您应该改用DateTime对象。您可以通过使用该DateTime.ParseDateTime.TryParse方法从字符串得到它:

DateTime date = DateTime.Parse("Oct 21 2014 1:00 AM"); // Use this as your query parameter. 

但是,如果你决定去与使用的格式化字符串,最简单的方法是首先将其解析到如上图所示,然后您可以使用ToString,并使用格式字符串重载,以根据需要格式化日期。

为了让您的例子格式:

DateTime date = DateTime.Parse("Oct 21 2014 1:00 AM"); 
string formatted = DateTime.ToString("yyyy-MM-dd hh:mm:ss"); // 2014-10-21 01:00:00 
+0

鉴于提供的字符串并假设它不会更改,这是正确的方法。 – Gabe

相关问题