Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将字符串转换为时间_C#_Asp.net - Fatal编程技术网

C# 将字符串转换为时间

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:

我的时间是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: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