1

我有这个代码注意事件日期是 2018-09-27 和事件 timeEnd 是 18:37

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

让差异 = now.getMilliseconds() - eventEnd.getMilliseconds();

但是当它应该至少在第一千位返回一些东西时,它会在百分之一的位置返回一个相对较小的数字

更新:这是完整的代码。谢谢回答!

  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');
    }
  }
4

3 回答 3

2

getMilliseconds返回一个介于 0 和 999 之间的数字。如,5 hours 6 minutes 7 seconds 8 milliseconds将只返回8(not 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,但这可能有点误导,因为它是一种隐式类型强制,您可能希望避免这种强制,以免在阅读我们的代码时混淆您自己和其他人。

于 2018-09-27T11:14:13.687 回答
1

只需将一个日期对象与另一个日期对象相减即可返回以毫秒为单位的差异。然后您可以将这些毫秒转换为其他所需的时间间隔。

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

尝试这个

于 2018-09-27T11:20:32.673 回答
1

你可以试试这个:

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

getTime 方法将返回一个数字,表示 1970 年 1 月 1 日 00:00:00 之间经过的毫秒数

参考

于 2018-09-27T11:22:39.503 回答