C# 将字符串转换为时间
我的时间是16:23:01。我尝试使用C# 将字符串转换为时间,c#,asp.net,C#,Asp.net,我的时间是16:23:01。我尝试使用DateTime.ParseExact,但它不起作用 这是我的密码: string Time = "16:23:01"; DateTime date = DateTime.ParseExact(Time, "hh:mm:ss tt", System.Globalization.CultureInfo.CurrentCulture); lblClock.Text = date.ToString(); 我希望它在标签上显示为04:23:01 PM。“16:
DateTime.ParseExact
,但它不起作用
这是我的密码:
string Time = "16:23:01";
DateTime date = DateTime.ParseExact(Time, "hh:mm:ss tt", System.Globalization.CultureInfo.CurrentCulture);
lblClock.Text = date.ToString();
我希望它在标签上显示为04:23:01 PM。“16:23:01”与“hh:mm:ss tt”模式不匹配-它没有am/PM指示器,16显然不在12小时时钟内。您正在解析部分指定该格式,因此需要匹配现有数据的格式。你想要:
DateTime dateTime = DateTime.ParseExact(time, "HH:mm:ss",
CultureInfo.InvariantCulture);
(请注意不变的区域性,而不是当前区域性-假设您的输入确实始终使用冒号。)
如果要将其格式化为hh:mm:ss tt
,则需要将该部分放入ToString
调用:
lblClock.Text = date.ToString("hh:mm:ss tt", CultureInfo.CurrentCulture);
或者更好(IMO)使用“无论文化的长期模式是什么”:
还要注意,hh
是不寻常的;通常,对于小于10的数字,您不希望使用0左键填充数字
(也考虑使用我的API,它有一个<代码> LoalTime< /Cord>类型-一个更适合的匹配,只是一个“一天的时间”。
< P>这给了你所需要的结果:string time = "16:23:01";
var result = Convert.ToDateTime(time);
string test = result.ToString("hh:mm:ss tt", CultureInfo.CurrentCulture);
//This gives you "04:23:01 PM" string
您也可以使用
CultureInfo.CreateSpecificCulture(“en-US”)
,因为并非所有区域性都显示AM/PM。接受的解决方案不包括边缘情况。
我找到了用4KB脚本实现这一点的方法。处理您的输入并转换数据
示例:
00:00:00 -> 00:00:00
12:01 -> 12:01:00
12 -> 12:00:00
25 -> 00:00:00
12:60:60 -> 12:00:00
1dg46 -> 14:06
你有这个想法。。。
检查一下
string time = "16:23:01";
var result = Convert.ToDateTime(time);
string test = result.ToString("hh:mm:ss tt", CultureInfo.CurrentCulture);
//This gives you "04:23:01 PM" string
00:00:00 -> 00:00:00
12:01 -> 12:01:00
12 -> 12:00:00
25 -> 00:00:00
12:60:60 -> 12:00:00
1dg46 -> 14:06