C# 把数字转换成时间?

C# 把数字转换成时间?,c#,.net,asp.net,asp.net-mvc,C#,.net,Asp.net,Asp.net Mvc,是否有一种巧妙的方法将简单数字(包括陆军时间)转换为时间格式(am、pm格式)?我可以用这种枯燥的方法,但我只是想知道是否还有其他方法 0800=>上午8:00 2317=>11:17 pm希望这能为你指明正确的方向: string time = "0800"; DateTime dt = DateTime.ParseExact(string.Format("{0}:{1}", time.Substring(0, 2), time.Substring(2, 2)), "HH:mm

是否有一种巧妙的方法将简单数字(包括陆军时间)转换为时间格式(am、pm格式)?我可以用这种枯燥的方法,但我只是想知道是否还有其他方法

0800=>上午8:00


2317=>11:17 pm

希望这能为你指明正确的方向:

    string time = "0800";
    DateTime dt = DateTime.ParseExact(string.Format("{0}:{1}", time.Substring(0, 2), time.Substring(2, 2)), "HH:mm", CultureInfo.InvariantCulture);
    MessageBox.Show(string.Format("{0:h:mm tt}", dt));

    time = "2345";
    dt = DateTime.ParseExact(string.Format("{0}:{1}", time.Substring(0, 2), time.Substring(2, 2)), "HH:mm", CultureInfo.InvariantCulture);
    MessageBox.Show(string.Format("{0:h:mm tt}", dt));
与所需的格式字符串一起使用

如果您可以接受多种格式,那么您需要依次调用每种格式,直到找到匹配的格式—我想这就是您所说的“冗长的方法”


有关格式代码,请参见。

您所说的“乏味的方法”是什么意思?带有自定义格式提供程序的DateTime.ParseExact()?var time=DateTime.ParseExact(“0800”,“HHmm”,CultureInfo.InvariantCulture);为什么要将字符串重新格式化为HH:mm格式而不是用户直接格式化为HHmm格式?好问题。因为我写得很快,没有想到这一点@Robaticus如果输入时间为“23”(如00:23),该怎么办?然后您的代码将抛出异常。
    DateTime dt = DateTime.ParseExact("0800", "HHmm", CultureInfo.InvariantCulture);
    string timestring = dt.ToString("h:mm tt");