如何将此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中有效。
答案 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:00
是2014-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);