Подтвердить что ты не робот

Как рассчитать время между двумя датами в typescript

Это работает в Javascript

new Date()-new Date("2013-02-20T12:01:04.753Z")

Но в typescript я не могу покоиться двумя новыми датами

Date("2013-02-20T12:01:04.753Z")

Не работает, потому что paremater не соответствует сигнатуре даты

4b9b3361

Ответ 1

Используйте метод getTime, чтобы получить время в миллисекундах с 1970-01-01 и вычесть следующие:

var time = new Date().getTime() - new Date("2013-02-20T12:01:04.753Z").getTime();

Ответ 2

Вот как это сделать в typescript:

(new Date()).valueOf() - (new Date("2013-02-20T12:01:04.753Z")).valueOf()

Лучшая читаемость:

      var eventStartTime = new Date(event.startTime);
      var eventEndTime = new Date(event.endTime);
      var duration = eventEndTime.valueOf() - eventStartTime.valueOf();

Ответ 3

Это не работает, потому что Date - Date полагается именно на тот тип принуждения типов, который разработан для предотвращения TypeScript.

Это можно обойти, используя префикс +:

var t = Date.now() - +(new Date("2013-02-20T12:01:04.753Z");

Или, если вы предпочитаете не использовать Date.now():

var t = +(new Date()) - +(new Date("2013-02-20T12:01:04.753Z"));

Смотрите обсуждение здесь.

Или см. ответ сиддхарта Сингха ниже для более элегантного решения с использованием valueOf()

Ответ 4

Чтобы вычислить разницу, вы должны поставить оператор +,

таким образом typescript преобразует даты в числа.

+new Date()- +new Date("2013-02-20T12:01:04.753Z")

Оттуда вы можете создать формулу для преобразования разницы в minutes или hours.

Ответ 5

// TypeScript

const today = new Date();
const firstDayOfYear = new Date(today.getFullYear(), 0, 1);

// Explicitly convert Date to Number
const pastDaysOfYear = ( Number(today) - Number(firstDayOfYear) );