ParseExact,小时计数器从0到23

时间:2014-06-25 07:31:00

标签: c# string parsing datetime format

我在使用ParseExact

将字符串转换为日期时遇到了一些问题
string _date = " 2014-06-23-12:40:18 "
DateTime dateresult = DateTime.ParseExact(
_date.Trim(),
"yyyy-MM-dd-hh:mm:ss", 
CultureInfo.InvariantCulture, 
DateTimeStyles.None)

dateresult的值 23/06/2014 00:40:18 。问题是结果日期时间是0而不是12!我需要保持正常的小时计数器从0到23

  • 如何更改我的代码以修复此错误?

3 个答案:

答案 0 :(得分:1)

尝试使用HH format specifier代替hh

DateTime dateresult = DateTime.ParseExact(_date.Trim(), "yyyy-MM-dd-HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.None)

答案 1 :(得分:1)

尝试更改此代码。而不是......,使用HH 24小时格式

string _date = " 2014-06-23-12:40:18 ";
DateTime dateresult = DateTime.ParseExact(_date.Trim(), "yyyy-MM-dd-HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.None);

答案 2 :(得分:1)

hh format specifier适用于 12小时制0112

使用H format specifier 用于 24小时制023

  

“H”自定义格式说明符将小时表示为0的数字   到23;也就是说,小时由零基24小时表示   计算午夜以来的小时数的时钟。一位数小时是   没有前导零的格式化。

string _date = "2014-06-23-12:40:18";
DateTime dateresult = DateTime.ParseExact(_date.Trim(), "yyyy-MM-dd-H:mm:ss", 
                      CultureInfo.InvariantCulture, DateTimeStyles.None);