【问题标题】:How to check the number of fixed time segments between two dates?如何检查两个日期之间的固定时间段数?
【发布时间】:2013-08-05 10:51:28
【问题描述】:

给出了两个日期:

比方说,

日期 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();

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

需要什么方法来做到这一点?

【问题讨论】:

    标签: java android date time jodatime


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      另一种方法可能是检查

      • 如果time1.getHours() 早于或等于凌晨 1 点,则result=1
      • 如果time2.getHours() 在凌晨 5 点之后,那么resutl++
      • result+= diff.getDays() - 1

      【讨论】:

      • 结果为 1。但它应该是 2。diff.getDays() 正在返回 1。使用 int days = Days.daysBetween(date1, date2).getDays(); 获取它。结果 = 1 + (1-1) = 1。那么为什么我们要从 diff.getDays() 中减去 1 呢?
      猜你喜欢
      • 2020-06-27
      • 2022-01-23
      • 2021-11-01
      • 2011-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-10
      • 1970-01-01
      相关资源
      最近更新 更多