@NatP

Как получить разницу между датами в typescript в миллисекундах для обратного отчета времени?

задача: обратный отсчет времени до конкретной даты, при помощи setInterval, но не получается получить разницу между датами, из-за
TS2362 The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum

и отсчет времени не запускается

import {Component, Input, OnInit, OnDestroy} from '@angular/core';


@Component({
  selector: 'app-summer-counter',
  templateUrl: './summer-counter.component.html',
  styleUrls: ['./summer-counter.component.css']
})
export class SummerCounterComponent implements OnInit, OnDestroy {

  currentDate: Date = new Date();
  endDate: Date = new Date(2018, 8, 1, 1, 0, 0);
  difdate: number = 0;
  sec: number = 0;
  min: number = 0;
  ours: number = 0;
  days: number = 0;

  constructor() {
  }

  ngOnInit() {
    this.difdate = setInterval(() => this.endDate - this.currentDate, 1000);
    this.sec = setInterval(() => this.difdate / 1000, 1000);
    this.min = setInterval(() => this.sec * 60, 1000);
    this.ours = setInterval(() => this.min * 60, 1000);
    this.days = setInterval(() => this.ours * 24, 1000);

  }

  ngOnDestroy(): void {
    clearInterval(this.difdate);
    clearInterval(this.sec);
    clearInterval(this.min);
    clearInterval(this.ours);
    clearInterval(this.days);
  }
}
  • Вопрос задан
  • 2192 просмотра
Пригласить эксперта
Ответы на вопрос 2
Xuxicheta
@Xuxicheta
инженер
setInterval возвращает intervalID, а не результат выполнения коллбека. А вы пытаетесь intervalID разделить на число.
И TS правильно ругается. Он за этим и нужен - указывать на ошибки еще на этапе написания кода.
Ответ написан
Комментировать
0xD34F
@0xD34F
TS2362 The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum

Ну да. Надо преобразовывть даты в числа при вычитании, т.е., вместо

this.endDate - this.currentDate

пусть будет

+this.endDate - +this.currentDate

, например. Ну а в целом, то что вы делаете - это просто бред сумасшедшего. Зачем вам пять разных интервалов? Что вы пытаетесь сделать в коллбеках этих интервалов? - результаты ваших вычислений улетают в никуда. Говорите, ваша цель - обратный отсчёт? Давайте я вам покажу, как он может выглядеть, а вы посмотрите, и подумаете, что к чему.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы