Как получить оставшиеся миллисекунды, вычитая 2 даты для использования в функции timeOut? - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть этот код, обратите внимание, что дата события - 2018-09-27, а время события - 18: 37

let now = new Date();
let eventEnd = new Date(
  `${this.attendanceParameters.attendance_event_date}, 
   ${this.attendanceParameters.attendance_time_end}`);

let разность = now.getMilliseconds () - eventEnd.getMilliseconds ();

но он возвращает относительно небольшое число в сотом месте, когда он должен хотя бы вернуть что-то на тысячное место

update: вот полный код.Спасибо за ответ!

  hostAttendance() {
    let now = new Date();
    let eventStart = new Date(
      `${this.attendanceParameters.attendance_event_date}, 
       ${this.attendanceParameters.attendance_time_start}`);
    let eventEnd = new Date(
      `${this.attendanceParameters.attendance_event_date}, 
       ${this.attendanceParameters.attendance_time_end}`);
    if (now >= eventStart && now <= eventEnd) {
      this.hostSignInAttendance();
      let difference = (+eventEnd) - (+now);
      console.log(difference);
      setTimeout(() => {
        this.hostSignOutAttendance();
      }, difference)  
    }
    else if (now > eventEnd) {

    }
    else if (now < eventStart) {
      this.alert('Event has not yet started', 'Please wait until event has concluded, thank you!', 'Ok');
    }
  }

Ответы [ 3 ]

0 голосов
/ 27 сентября 2018

Простое вычитание одного объекта даты с другим объектом даты возвращает разницу в миллисекундах.Затем вы можете преобразовать эти миллисекунды в другой желаемый интервал.

let now = new Date();
let eventEnd = new Date(
  `2018-09-27, 
   18:37`);
let difference = (+eventEnd)-(+now);
console.log(difference);

Попробуйте это

0 голосов
/ 27 сентября 2018

Вы можете попробовать это:

let difference = now.getTime() - eventEnd.getTime();

Метод getTime вернет число, представляющее миллисекунды, прошедшие с 1 января 1970 года 00:00:00

Ссылка

0 голосов
/ 27 сентября 2018

getMilliseconds возвращает число от 0 до 999. Как и в случае, 5 hours 6 minutes 7 seconds 8 milliseconds просто вернет 8 (не 8 + 7 * 1000 + 6 * 1000 * 60 + 5 * 1000 * 60 * 60).

Чтобы получить общее количество миллисекунд, просто приведите кчисло, добавив + перед датой:

const date1 = new Date(...)
const date2 = new Date(...)
const diff = (+date2) - (+date1)

В приведенном выше коде diff будет число миллисекунд между двумя временными метками.


Технически,Вы также можете просто сделать date2 - date1, но это может ввести в заблуждение, поскольку это неявное принуждение типов, которого вы можете избежать, чтобы не запутать себя и других, читающих наш код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...