我想以天,小时和分钟为单位来获取两个日期之间的差额。我尝试使用1970年1月1日以来的ms来做到这一点:

var d = new Date()

    daydiff = ~~((d.getTime()-(Date.parse(SavedReminders[i][7]))) / 86400000);

    hourdiff = ~~((d.getTime() - (Date.parse(SavedReminders[i][7]))) / 3600000);

    mindiff = ~~((d.getTime() - (Date.parse(SavedReminders[i][7]))) / 60000);



  其中SavedReminders [i] [7] = 2015-04-06T17:34:00


但是,这给出了一些奇怪的结果,如果我在同一小时(下午5点)进行测试,那么它似乎可以正常工作,但是当它变成下午6点或晚上7点时,我开始得到错误的结果,好像没有考虑几个小时。

例如,当当前时间是“ 2015-04-06T19:26:00”,并且我运行此代码时,它将给出结果:


  d.getTime()= 1428344775364
  
  Date.parse(SavedReminders [i] [7] = 1428341640000
  
  daydiff = 0
  
  hourdiff = 0
  
  mindiff = 52

最佳答案

使用~~此技术使用非常大的数字可能会出现整数溢出问题? (不知道除法运算会在右边产生多少个小数点...)

使用传统的Math.floor时是否会遇到相同的错误?

daydiff = Math.floor((d.getTime()-(Date.parse(SavedReminders[i][7]))) / 86400000);

07-28 05:24