我有以下字符串格式:“26/10/2017 22:54:22”
我试图将其转换为DateTime对象,该对象应该与字符串格式相同(24小时格式),但为什么它会生成12h格式。
我的代码:
var time = "26/10/2017 22:54:22";
DateTime convertedDate = DateTime.ParseExact(time, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture);
Console.WriteLine(convertedDate);
Console.ReadLine();
我得到的输出是:10/26/2017 10:54:22 PM
任何想法为什么会这样?
答案 0 :(得分:1)
如果您已成功解析为DateTime
结构,则ToString
的重载方法为DateTime
,它会将当前DateTime
对象的值转换为其使用指定格式和当前文化的格式约定的等效字符串表示。
所以在你的情况下你可以使用:
Console.WriteLine(convertedDate.ToString("MM/dd/yyyy HH:mm:ss"));
答案 1 :(得分:1)
DateTime
本身并没有任何区别,只有在转换为字符串时才会有差异。
Console.WriteLine
将调用作为参数传递的对象的ToString()
方法(没有任何参数的方法)。对于DateTime
,ToString()
根据当前区域设置格式化日期和时间。您的可能会设置为12小时格式。
如果您需要使用其他格式打印时间,则应使用DateTime
方法的其他变体明确地格式化ToString
。
在你的情况下:
Console.WriteLine(convertedDate.ToString("MM/dd/yyyy HH:mm:ss"));