【问题标题】:Difference between two unix timestamps in days, hours, minutes and seconds两个unix时间戳在天、小时、分钟和秒之间的差异
【发布时间】:2020-11-25 13:33:26
【问题描述】:

我有一个事件,这个事件的日期和时间被格式化为 unix 时间戳类型。

在 JavaScript 中(不是在寻找插件方法,例如 modern.js),我现在正在尝试确定今天日期和事件日期之间的时间差。

我正在寻求实现“事件倒计时”功能,该功能将对事件日期的天、小时、分钟和秒进行倒计时。

我下面代码中的{{ event_date_and_time }} 是一个HuBL 变量。

目前的做法:

var todays_date = new Date().getTime() / 1000;
  var event_date = new Date({{ event_date_and_time }}).getTime() / 1000

  var start = todays_date;
  var end = event_date;

  console.log(todays_date); // this logs "1596626215.983"
  console.log(end); // this logs "1596888000"

  function timeDifference(date1,date2) {
      var difference = date1 - date2;

      var daysDifference = Math.floor(difference/1000/60/60/24);
      difference -= daysDifference*1000*60*60*24

      var hoursDifference = Math.floor(difference/1000/60/60);
      difference -= hoursDifference*1000*60*60

      var minutesDifference = Math.floor(difference/1000/60);
      difference -= minutesDifference*1000*60

      var secondsDifference = Math.floor(difference/1000);

      console.log('difference = ' +
        daysDifference + ' day/s ' +
        hoursDifference + ' hour/s ' +
        minutesDifference + ' minute/s ' +
        secondsDifference + ' second/s ');
  }

  timeDifference(start, end);

所以,我的测试时间是下午 12:15 (todays_date)。活动日期定为 8 月 8 日中午 12:00。

我得到的结果是:

difference = -1 day/s 23 hour/s 55 minute/s 38 second/s

哪个明显错了,我哪里错了?

【问题讨论】:

标签: javascript html jquery unix-timestamp


【解决方案1】:

刚刚除以1000,并设置了一个日期,

似乎按预期工作。

我的猜测是,除以 1000,实际上使两个日期都呈现为 1970 年,其中 unix 时间戳开始,因为两者都没有

“1596626215.983”

或者

“1596888000”

是 Unix 中的实际日期,本质上都是 错误

var todays_date = new Date().getTime();
  var event_date = new Date('August 08, 20 00:20:18 GMT+00:00').getTime();

  var start = todays_date;
  var end = event_date;

  console.log(todays_date); // this logs "1596626215.983"
  console.log(end); // this logs "1596888000"

  function timeDifference(date1,date2){
      var difference = date1 - date2;

      var daysDifference = Math.floor(difference/1000/60/60/24);
      difference -= daysDifference*1000*60*60*24

      var hoursDifference = Math.floor(difference/1000/60/60);
      difference -= hoursDifference*1000*60*60

      var minutesDifference = Math.floor(difference/1000/60);
      difference -= minutesDifference*1000*60

      var secondsDifference = Math.floor(difference/1000);

      console.log('difference = ' +
        daysDifference + ' day/s ' +
        hoursDifference + ' hour/s ' +
        minutesDifference + ' minute/s ' +
        secondsDifference + ' second/s ');
  }

  timeDifference(start, end);

【讨论】:

  • 在 JS 中是否有本地方法可以将日期(例如“August 08, 20 00:20:18 GMT+00:00”)转换为 unix?我无法格式化 @987654322 @ 进入类似于您在 end_date var 中的内容。
  • event_date_and_time 是一个 unix 时间戳。因此,如果我执行 {{ event_date_and_time }}(等效于console.log),它会打印以下结果:1596888000000(我假设是 2020 年 8 月 8 日下午 12:00)
  • 如果您已经将它作为时间戳,则无需转换 - 只需 var end = {{event_date_and_time}} 并忘记应该没问题的 var event_date
  • 明白,我现在只有以下内容:var end = {{ event_date_and_time }};。但是,在查看控制台时,我仍然看到日志:difference = -3 day/s 1 hour/s 47 minute/s 4 second/s - 从今天到 8 月 8 日 12:00 的差异不在于,应该大致是2 days, 21 hours, 13 minutes and 9 seconds?另外,不知道为什么要写-3 days
  • 我猜你需要反转 var difference = date1 - date2; 所以它变成var difference = date2 - date1; - 这会给我difference = 2 day/s 10 hour/s 12 minute/s 24 second/s 然后它可能是由于时区
猜你喜欢
  • 1970-01-01
  • 2021-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-19
  • 1970-01-01
  • 2014-05-04
  • 2017-05-03
相关资源
最近更新 更多