将字符串转换为日期时间格式为yyyy-MM-dd HH:mm:ss in C#

时间:2014-01-27 14:11:29

标签: c# datetime

如何将此2014-01-01 23:00:00转换为DateTime我这样做:

Console.WriteLine(DateTime.ParseExact("2014-01-01 23:00:00", "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture));

结果是这样的:

1/1/2014 11:00:00 PM

这件事让我抓狂,因为这种格式在java中有效。

2 个答案:

答案 0 :(得分:16)

我认为您的解析有效。问题是转换回字符串时。您可以在参数中提供所需的格式:

DateTime date = DateTime.ParseExact("2010-01-01 23:00:00", "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture);
string formattedDate = date.ToString("yyyy-MM-dd HH:mm:ss")
Console.WriteLine(formattedDate);

默认情况下(没有指定格式),它使用从当前文化派生的格式信息。

答案 1 :(得分:6)

因为2014-01-01 23:00:002014-01-01 11:00:00 PM

更好的解释

您隐式调用DateTime.ToString(),默认使用常规("G")格式,en-US文化格式为MM/dd/yyyy hh:mm:ss tt

如果要以其他格式显示时间,则需要指定它:

string s = DateTime.ParseExact("2010-01-01 23:00:00", "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture);
Console.WriteLine(s.ToString("yyyy-MM-dd HH:mm:ss");

或者由于您使用相同的格式字符串,只需存储它:

string format = "yyyy-MM-dd HH:mm:ss";
DateTime dt = DateTime.ParseExact("2010-01-01 23:00:00", format , CultureInfo.InvariantCulture);
Console.WriteLine(s.ToString(format);