Разница между двумя unix отметками времени в днях, часах, минутах и ​​секундах - PullRequest
0 голосов
/ 05 августа 2020

У меня есть событие, дата и время этого события отформатированы как unix отметка времени.

В JavaScript (не ищу плагин-подход, такой как modern.js), я Я сейчас пытаюсь определить разницу во времени между сегодняшней датой и датой события.

Я хочу реализовать функцию «обратного отсчета до события», которая будет отсчитывать дни, часы, минуты и секунды до события date.

{{ 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 августа 12:00.

Результаты, которые я получаю с приведенными выше:

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

Что явно неверно, где я ошибаюсь?

1 Ответ

0 голосов
/ 05 августа 2020

Просто удалил деление на 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);
...