从DateTime.TryParseExact
一个日期和时间其 日期时间等效的指定字符串表示形式转换。 字符串表示的格式必须为 与指定的格式完全匹配。
就你而言,它们不是。改为使用yyyy-MM-dd HH:mm:ss
格式。
string s = "2014-09-25 09:18:24";
DateTime dt;
if(DateTime.TryParseExact(s, "yyyy-MM-dd HH:mm:ss",
CultureInfo.InvariantCulture,
DateTimeStyles.None, out dt))
{
Console.WriteLine(dt);
}
这是一个有点不清楚,但如果你的字符串是09/25/2014 09:18:24
,那么你可以使用MM/dd/yyyy HH:mm:ss
格式代替。只是一个小费,"/"
custom format specifier具有特殊含义作为取代我与当前文化或提供文化日期分隔。这意味着,如果您的CurrentCulture
或提供的文化的DateSeparator
不是/
,则如果您的格式和字符串完全匹配,则您的解析操作将失败甚至。
如果你有已经一个DateTime
并要格式化它,你可以使用DateTime.ToString(string)
method等;
dt.ToString("yyyy-mm-dd", CultureInfo.InvariantCulture); // 2014-09-25
或
dt.ToString("yyyy-mm-dd HH:mm:ss", CultureInfo.InvariantCulture); // 2014-09-25 09:18:24
记住,DateTime
没有任何隐含格式。它只包含日期和时间值。它们的字符串表示有格式。
[转换字符串为DateTime C#的.NET]的可能重复(http://stackoverflow.com/questions/919244/converting-string-to-datetime-c-net) – 2014-11-04 11:15:35
你对打扰和解析感到困惑吗?如果输入字符串是“09/25/2014”,为什么要用'yyyy-MM-dd'解析它? – 2014-11-04 11:17:04
对于'DateTime'存储的内容,您似乎也感到困惑......它不包含*格式......它只是一个日期和时间。看到http://stackoverflow.com/questions/9763278 – 2014-11-04 11:19:15