【问题标题】:How to get number of hours between 2 System.currentTimeMillis()如何获取 2 System.currentTimeMillis() 之间的小时数
【发布时间】:2017-04-11 11:44:37
【问题描述】:

我已将记录插入时间保存在System.currentTimeMillis()。现在目前,我知道当前的System.currentTimeMillis()

我想知道两者在经过的小时数方面的区别。

当我使用这个时

System.currentTimeMillis()/(60 * 60 * 1000 ) - savedDate/(60 * 60 * 1000) 

它在输出中给了我这个数字414419

请指导我如何从currentTimeMillis获取小时数

【问题讨论】:

  • 可能重新看看运算符优先级?
  • 首先,我会先减去,然后再进行除法。否则舍入误差将相加(从 9:59 到 10:01 会有 1 小时,但从 10:01 到 10:59 会有 0 小时)。其次,我不想自己做除法,这会迫使读者弄清楚我从哪里得到这些数字。使用库可以使代码更清晰。例如Duration.ofMillis(System.currentTimeMillis() - savedDate).toHours(),或见Sujith Niraikulathan’s answer

标签: java android swing datetime


【解决方案1】:

尝试使用android的time util类来解决你的问题

private long hourDifference(long millisFirst, long millisSecond) {
    return TimeUnit.MILLISECONDS.toHours(millisSecond - millisFirst);
}

【讨论】:

    【解决方案2】:

    您必须在乘法周围添加括号:

    System.currentTimeMillis()/(60 * 60 * 1000 ) - savedDate/(60 * 60 * 1000)
    

    【讨论】:

    • 这仍然给我 414419 的输出
    • 这 2 次之间的小时数
    • 想通了。谢谢。这是当前值 1491911618956
    【解决方案3】:
    SimpleDateFormat sdf = new SimpleDateFormat("MMM dd,yyyy HH:mm");    
    Date resultdate = new Date(yourmilliseconds);
    System.out.println(sdf.format(resultdate));
    

    【讨论】:

    • 你的回答毫无意义。有 7 200 000 毫秒,我预计 2 小时。从你的代码中,我在我的电脑上得到了jan. 01,1970 03:00
    【解决方案4】:

    这可能会对你有所帮助。

       long diffInMillisec = System.currentTimeMillis() - savedDate;
       long diffInSec = TimeUnit.MILLISECONDS.toSeconds(diffInMillisec);
       seconds = diffInSec % 60;
       diffInSec/= 60;
       minutes =diffInSec % 60;
       diffInSec /= 60;
       hours = diffInSec % 24;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-12
      • 1970-01-01
      • 1970-01-01
      • 2023-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多