我正在使用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
我该怎么做?
答案 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);