如何计算打字稿中2个日期之间的时间

时间:2013-02-20 12:35:25

标签: date typescript

这适用于Javascript

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

但是在打字稿中我不能休息两个新的日期

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

因为paremater与日期签名不匹配而无法工作

5 个答案:

答案 0 :(得分:108)

使用getTime method获取自1970-01-01以来的总毫秒时间,并减去这些时间:

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

答案 1 :(得分:82)

这是应该在打字稿中完成的:

(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();

答案 2 :(得分:16)

它不起作用,因为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"));

See discussion here

或者参见下面的Siddharth Singh的答案,使用valueOf()

获得更优雅的解决方案

答案 3 :(得分:3)

为了计算你必须放置+运算符的差异,那么打字稿将日期转换为数字。

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

从那里你可以制定一个公式,将差异转换为分钟或小时。

答案 4 :(得分:1)

// TypeScript

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

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