2

给出了两个日期:

比方说,

日期 dt1 = 2013 年 6 月 22 日晚上 8:00

日期 dt2 = 2013 年 6 月 24 日上午 6:00

给定这两个日期,我想确定这两个日期之间从凌晨 1 点到凌晨 5 点有多少段。

对于上面,有两个部分:

6 月 23 日凌晨 1 点至凌晨 5 点

6 月 24 日凌晨 1 点至凌晨 5 点

所以答案应该是2。

我可以得到两次之间的差异,

var time1 = new Date(dt1).getTime();
  var time2 = new Date(dt2).getTime();

  var diff = new Date(time1 - time2);

以及小时数、分钟数和秒数,

  var hours = diff.getHours();
  var minutes = diff.getMinutes();
  var seconds = diff.getMinutes();

但这只会产生预期的差异。

这样做需要什么方法?

4

2 回答 2

1

就像计算机科学中的所有其他事情一样:将问题分解为一系列您能够解决的小问题。

例如,在这个问题中,您可以简单地确定在时间跨度中是否至少有一个“段”。如果有,您可以从完整时间跨度中删除前 24 小时,然后重复该过程,只要有 24 小时可以删除。记得一路数数。

于 2013-08-05T10:55:15.303 回答
1

另一种方法可能是检查

  • 如果time1.getHours()早于或等于凌晨 1 点,那么result=1
  • 如果time2.getHours()在凌晨 5 点之后resutl++
  • result+= diff.getDays() - 1
于 2013-08-05T10:58:12.647 回答