【发布时间】:2016-08-26 13:46:38
【问题描述】:
给定从字符串格式化的两个 YYYY-MM-DD-HH:MM 日期,我想获取日期之间的小时时差。
这是我的代码:
Dim ds1 As String: ds1 = "March 3, 2015 2:00pm "
Dim ds2 As String: ds2 = "March 4, 2015 3:00pm " '25 hours difference
ds1 = Format(ds1, "YYYY-MM-DD-HH:MM") '2015-03-03-14:00
ds2 = Format(ds2, "YYYY-MM-DD-HH:MM") '2015-03-04-15:00
Dim d As Date: d = CDate(ds2) - CDate(ds1) 'gives the 25 hour diffrence
代码在 CDate(ds2) 和 CDate(ds1) 上出现“类型不匹配”错误,因为 CDate 仅适用于日期,而不适用于小时/分钟。
如何获取这些日期之间的小时差?
【问题讨论】:
-
CDate 适用于日期、小时和分钟。因为
YYYY-MM-DD-HH:MM不是CDate 识别的日期时间格式,您会收到类型不匹配错误。将Debug.Print IsDate(ds1)添加到您的代码以进行验证。如果数据以该格式交给您,您需要将其作为文本字符串解析为 CDate 可以识别的格式。如果要将日期时间转换为该格式,请先计算小时数,然后再进行格式化。