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

时间:2009-03-23 17:05:10

标签: vb.net datetime time

我收到的数据表示来自服务的时隙作为字符串形式:

  

1500-1600

这意味着下午3点到4点。

我将列出这些例如。

  

1200-1300

     

1300-1400

     

1400-1500

我必须在UI中将其表示为

  

下午12点 - 下午1点

     

下午1点 - 下午2点

     

下午2点 - 下午3点

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

我的问题是,有没有办法使用DateTime对象将24小时时间转换为12小时时间,还有一种方法可以按顺序排序时间吗?

目前我觉得我必须编写自定义解析功能,但想知道是否有人知道如何做得更好?或者可以就如何实现这一目标提出建议。

5 个答案:

答案 0 :(得分:11)

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

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

这将返回DateTime与今天的日期和给定时间。然后,您可以根据需要格式化DateTime

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

答案 1 :(得分:4)

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

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

formatInfoIFormatProvider interface实施。

如果你有一个三位数字符串,那么你可以使用它:

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

但是,我建议使用四位数的字符串,因为时间模糊,如“121”。

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

string ampm = dt.ToString("htt");

答案 2 :(得分:1)

我首先拆分“ - ”以获取两个不同的字符串,然后使用DateTime.ParseExact()方法查看将其转换为可用的日期时间对象

答案 3 :(得分:0)

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

Dim aDateTime As DateTime
aDateTime = DateTime.ParseExact(input, "HHmm", Nothing)
Dim outputToDesiredFormat As String = dt.ToString("h:mm tt")

答案 4 :(得分:-1)

自定义解析应该是微不足道的。在' - '处拆分并每次解析;删除最后两位数字以获得分钟数,剩下的一两位数来获得小时数,然后就完成了。

如果您需要它们,请对它们进行排序。

如果您需要更多帮助,请更新问题或发表评论。