【发布时间】:2013-02-05 11:07:59
【问题描述】:
这适用于 Javascript
new Date() - new Date("2013-02-20T12:01:04.753Z")
但是在打字稿中我不能休息两个新日期
Date("2013-02-20T12:01:04.753Z")
由于参数与日期签名不匹配而无法工作
【问题讨论】:
标签: date typescript
这适用于 Javascript
new Date() - new Date("2013-02-20T12:01:04.753Z")
但是在打字稿中我不能休息两个新日期
Date("2013-02-20T12:01:04.753Z")
由于参数与日期签名不匹配而无法工作
【问题讨论】:
标签: date typescript
它不起作用,因为 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() 的更优雅的解决方案
【讨论】:
为了计算差异,您必须输入+ 运算符,
这样typescript 将日期转换为数字。
+new Date()- +new Date("2013-02-20T12:01:04.753Z")
您可以从那里创建一个公式将差异转换为minutes 或hours。
【讨论】:
// TypeScript
const today = new Date();
const firstDayOfYear = new Date(today.getFullYear(), 0, 1);
// Explicitly convert Date to Number
const pastDaysOfYear = ( Number(today) - Number(firstDayOfYear) );
【讨论】:
在打字稿中应该这样做:
(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();
【讨论】:
eventStartTime 和 eventEndTime,持续时间也会被输入为 number(意思是如果你真的在这里取第三行代码在这里持续时间本身就是一个数字)
使用getTime method 获取自 1970-01-01 以来的总毫秒数,并减去这些时间:
var time = new Date().getTime() - new Date("2013-02-20T12:01:04.753Z").getTime();
【讨论】:
new Date(1970, 1, 1, 0, 0, 0, 0).valueOf() // returns 2674800000 new Date(1970, 1, 1, 0, 0, 0, 0).getTime() // returns 2674800000
new Date().getTime(),而是使用Date.now(),这样您就不会不必要地创建新对象。