我想将字符串转换为日期时间格式。 问题是字符串有不同的格式。 例如,在下面的代码中,strDate可以是“2/20/2014 1:41:57 PM”或“20/02/2014 13:44:56”。 Convert.ToDateTime(strDate)只针对一种格式(用户浏览器设置上的格式)执行良好,并为另一种格式生成错误。 如何将字符串成功转换为独立于字符串格式的日期时间? 感谢
DateTime dt = Convert.ToDateTime(strDate);
答案 0 :(得分:2)
您可以使用DateTime.TryParseExact
或Datetime.ParseExact
多种格式,例如:
string dateStr = "20/02/2014 1:41:57 PM";
string[] dateFormats = new[]
{
"d/M/yyyy h:mm:ss tt",
"M/d/yyyy h:mm:ss tt",
};
DateTime dt;
if (DateTime.TryParseExact(dateStr,
dateFormats,
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out dt))
{
//valid dates for formats
}
else
{
//invalid date
}
这种方法的问题在于它会使用10/02/2014 1:41:57 PM
这样的字符串给你不一致的结果,上面的代码会将其解析为2014年2月10日,而不是October 2nd 2014
,以避免这种情况你可以自定义您的客户端以特定格式返回日期,然后进行相应的解析。
答案 1 :(得分:0)
您想要DateTime.Parse()或DateTime.TryParse()
即
DateTime dt;
if(DateTime.TryParse(stringDate, out dt)
{
//successful datetime conversion
}
如果你知道字符串将是几种确切格式之一,你可以使用DateTime.TryParseExact()并传入每种格式的字符串数组(第二次重载)。