在datetime变量中获取24小时时间格式

Raj*_*mar 2 c# datetime winforms

我正在使用DateTime.TryParseExact函数使用以下代码获取变量中的datetime值

 DateTime dt;
 CultureInfo provider = CultureInfo.InvariantCulture;
 System.Globalization.DateTimeStyles style = DateTimeStyles.None;
 string[] format = new string[] { "d/MMM/yy H:m:s tt","d-MMM-yy H:m:s tt" }; 
 string strDate = "24-May-13 12:03:03 AM";
 DateTime.TryParseExact(strDate, format, provider, style, out dt);
Run Code Online (Sandbox Code Playgroud)

现在它做了什么它正确解析日期时间并给我结果24-May-2013 12:03:03 但我希望它应该像这样返回我24-May-2013 00:03:033

我怎样才能做到这一点 ?

ang*_*son 6

使用小写字母h作为格式,在LINQPad中测试以下内容:

void Main()
{
    CultureInfo provider = CultureInfo.InvariantCulture;
    System.Globalization.DateTimeStyles style = DateTimeStyles.None;
    string[] format = new string[] { "d/MMM/yy h:m:s tt","d-MMM-yy h:m:s tt" }; 
    //                                         ^                   ^
    //                                         +------ here -------+
    string strDate = "24-May-13 12:03:03 AM";

    DateTime dt;
    if (DateTime.TryParseExact(strDate, format, provider, style, out dt))
    {
        dt.Dump();
        dt.Hour.Dump();
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

24.05.2013 00:03:03
0
Run Code Online (Sandbox Code Playgroud)

  • 因为您没有解析24小时格式.你正在解析12小时格式.在内部,DateTime值被*存储*作为完全不同的东西,处理24小时就好了.这只是一个解析和显示问题.您的格式是使用AM/PM说明符指定的24小时格式,这是一个不正确的组合,所以切换到小写的`h`. (2认同)