186

这适用于Javascript

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

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

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

不工作,因为参数与日期签名不匹配

4

5 回答 5

198

使用该getTime方法获取自 1970-01-01 以来的总毫秒数,然后减去:

var time = new Date().getTime() - new Date("2013-02-20T12:01:04.753Z").getTime();
于 2013-02-20T12:41:12.577 回答
147

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

(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();
于 2015-08-07T22:48:20.213 回答
39

为了计算差异,您必须输入+运算符,

这种方式typescript将日期转换为数字。

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

从那里您可以制定一个公式将差异转换为minuteshours

于 2018-03-22T09:41:03.603 回答
33

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

请参阅此处的讨论

或者参见下面的 Siddharth Singh 的回答,以获得更优雅的解决方案valueOf()

于 2013-02-20T12:42:19.603 回答
8
// TypeScript

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

// Explicitly convert Date to Number
const pastDaysOfYear = ( Number(today) - Number(firstDayOfYear) );
于 2019-09-05T03:18:38.383 回答