我有一个firebird数据库,有些表有时间戳。例如,我的数据库返回这样的日期:“1/4/2012 3:08:44 PM”或“12/20/2011 4:38:02 PM”。我使用TryParseExact,代码如下:
DateTime.TryParseExact(results[i][1], "M/d/yyyy h:mm:ss tt", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt)
我尝试过很多格式,比如“MM / dd / yyyy hh:mm:ss tt”但是没有一种格式有效。请帮助我,否则我这次会发疯...
答案 0 :(得分:0)
看一下这篇文章
http://msdn.microsoft.com/en-us/library/w2sa9yss.aspx
要看的关键部分是
// Parse date-only value without leading zero in month using "d" format.
// Should throw a FormatException because standard short date pattern of
// invariant culture requires two-digit month.
dateString = "6/15/2008";
try {
result = DateTime.ParseExact(dateString, format, provider);
Console.WriteLine("{0} converts to {1}.", dateString, result.ToString());
}
catch (FormatException) {
Console.WriteLine("{0} is not in the correct format.", dateString);
}
因此,您的数据库可能没有返回标准模式。对我来说似乎很傻,但这会引发异常。在示例中,它仅表示“仅限日期”值,而您的值不是。
如果您在字符串中有日期,则可以执行旧的手动修复:
public static string FixDate(string date)
{
return (date.IndexOf('/') == 1) ? "0" + date : date;
}