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

时间:2013-09-30 08:24:28

标签: c# winforms datetime

我正在使用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);

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

我该怎么做?

5 个答案:

答案 0 :(得分: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();
    }
}

输出:

24.05.2013 00:03:03
0

答案 1 :(得分:3)

你应该使用

  

HH:MM:SS

以24小时格式显示时间(连同日期)。

警告:

正如接受的答案所指出的,如果您尝试解析已经是24小时格式的日期,这样可以正常工作。否则,您使用小写'h'

答案 2 :(得分:1)

你遇到的问题是H以24小时格式查找小时并完全忽略了timepart说明符。请改用12小时格式说明符h

答案 3 :(得分:1)

试试这个 DateTime dateTime = DateTime.Now;

string strMinFormat = dateTime.ToString(“hh:mm:ss tt”); // 12小时格式
string strMaxFormat = dateTime.ToString(“HH:mm:ss tt”); // 24小时格式

答案 4 :(得分:0)

using System.Globalization;

//Your datetime variable value for example or you can get it from the database
//2019-05-31 03:00:00 PM
DateTime datetime = DateTime.ParseExact("2019-05-31 03:00:00 PM", "yyyy-MM-dd hh:mm:ss tt", CultureInfo.InvariantCulture); 

//2019-05-31 15:00:00
string _24HoursFormat = datetime.ToString("yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture);

//15:00:00
string _24HoursFormatTimeOnly = datetime.ToString("HH:mm:ss", CultureInfo.InvariantCulture);