【问题标题】:Convert numbers to time?将数字转换为时间?
【发布时间】:2010-06-11 13:38:51
【问题描述】:

有没有一种巧妙的方法可以将简单的数字(包括军队时间)转换为时间格式(上午、下午格式)?我可以做繁琐的方法,但我只是想知道是否还有其他方法

0800 => 上午 8:00

2317 => 晚上 11:17

【问题讨论】:

  • “繁琐的方法”是什么意思?带有自定义格式提供程序的 DateTime.ParseExact()?
  • var time = DateTime.ParseExact("0800", "HHmm", CultureInfo.InvariantCulture);

标签: c# .net asp.net asp.net-mvc


【解决方案1】:
    DateTime dt = DateTime.ParseExact("0800", "HHmm", CultureInfo.InvariantCulture);
    string timestring = dt.ToString("h:mm tt");

有关格式代码,请参阅documentation

【讨论】:

    【解决方案2】:

    希望这会为您指明正确的方向:

        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));
    

    【讨论】:

    • 为什么要将字符串重新格式化为 HH:mm 格式而不是用户直接使用 HHmm 格式?
    • 好问题。因为我写得很快,并没有考虑到这一点。 :)
    • @Robaticus 如果输入时间是“23”(00:23)怎么办?然后你的代码会抛出异常。
    【解决方案3】:

    DateTime.TryParse 与您想要的格式字符串一起使用。

    如果您可以接受多种格式,那么您需要依次调用每种格式,直到找到匹配的格式 - 我认为这就是您所说的“繁琐的方法”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-10
      • 2020-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多