代码之家  ›  专栏  ›  技术社区  ›  w4ymo

如何将1400-1500转换为下午2点到3点?

  •  3
  • w4ymo  · 技术社区  · 17 年前

    1500-1600

    我会有一份清单。

    1200-1300

    1400-1500

    我必须在UI中将其表示为

    下午12时至1时

    下午1时至2时

    下午2时至3时

    不幸的是,这个列表可能是随机排列的。

    目前,我觉得我将不得不编写一个自定义解析函数,但想知道是否有人知道如何更好地完成这项工作?或者可以就如何实现这一目标提出建议。

    5 回复  |  直到 6 年前
        1
  •  11
  •   Jon Skeet    17 年前

    我假设你知道如何将时间分为“1400”和“1500”。最简单的方法(IMO)是使用

    DateTime.ParseExact(input, "HHmm", CultureInfo.InvariantCulture)
    

    DateTime 今天的日期和给定的时间。然后你可以格式化它 日期时间 随你怎么想。

    或者,您可以将“1400”解析为一个整数,然后使用Math.DivRem除以100来计算分钟和小时数。就个人而言,我更喜欢使用DateTime。

        2
  •  4
  •   casperOne    13 年前

    如果您有四位数字字符串(1200、1300),并且始终是四位数字(例如,上午9点是0900),那么您可以调用静态 ParseExact method 上 DateTime structure 像这样:

    DateTime dt = DateTime.ParseExact(time, "HHmm", formatInfo);
    

    formatInfo IFormatProvider interface 实施

    DateTime dt = DateTime.ParseExact(time, "Hmm", formatInfo);
    

    但是,我建议使用四位字符串,因为“121”这样的时间表示不明确。

    从那里,如果您想输出am/pm等,您只需调用 ToString method ,传递以下格式:

    string ampm = dt.ToString("htt");
    
        3
  •  1
  •   Siddharth Rout    14 年前

    我将首先在“-”上拆分以获得两个不同的字符串,然后使用 DateTime.ParseExact() 方法将其转换为可用的datetime对象

        4
  •  0
  •   Siddharth Rout    14 年前

    尝试将其转换并输出为所需的任何格式

    Dim aDateTime As DateTime
    aDateTime = DateTime.ParseExact(input, "HHmm", Nothing)
    Dim outputToDesiredFormat As String = dt.ToString("h:mm tt")
    
        5
  •  -1
  •   MarkusQ    17 年前

    如果需要更多帮助,请更新问题或留下评论。