2

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

 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

我怎样才能做到这一点 ?

4

5 回答 5

6

为您的格式使用小写字母,在LINQPadh中测试以下内容:

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
于 2013-09-30T08:35:00.890 回答
3

你应该使用

高:毫米:秒

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

警告:

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

于 2013-09-30T08:27:36.103 回答
1

您遇到的问题是以H24 小时格式查找小时并完全忽略时段说明符。请改用 12 小时格式说明符h

于 2013-09-30T08:34:15.447 回答
1

尝试这个:

DateTime dateTime = DateTime.Now;

string strMinFormat = dateTime.ToString("hh:mm:ss tt"); // 12 hours format
string strMaxFormat = dateTime.ToString("HH:mm:ss tt"); // 24 hours format
于 2016-06-25T07:23:12.987 回答
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);
于 2019-05-31T04:54:10.047 回答