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

use*_*288 119 date typescript

这适用于Javascript

new Date()-new Date("2013-02-20T12:01:04.753Z")
Run Code Online (Sandbox Code Playgroud)

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

Date("2013-02-20T12:01:04.753Z")
Run Code Online (Sandbox Code Playgroud)

不要工作,因为paremater不匹配日期签名

Guf*_*ffa 133

使用该getTime方法获取自1970-01-01以来的总毫秒时间,并减去以下内容:

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

  • 一个提示,而不是使用`new Date().getTime()`使用`Date.now()`所以你不必不必要地创建新对象. (18认同)
  • @KenLyon 来自 MDN getTime 文档:_您可以使用此方法来帮助将日期和时间分配给另一个 Date 对象。**此方法在功能上等同于 valueOf() 方法。**_ (4认同)
  • 我认为你混淆了getTime()和valueOf().根据文档,getTime()"以毫秒为单位获取时间值." 而它是valueOf(),"返回自UTC时间1970年1月1日午夜以来的存储时间值,以毫秒为单位." (3认同)
  • 两者的作用相同: `new Date(1970, 1, 1, 0, 0, 0, 0).valueOf() // returns 2674800000 new Date(1970, 1, 1, 0, 0, 0, 0).getTime () // 返回 2674800000` (3认同)

Sid*_*ngh 97

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

(new Date()).valueOf() - (new Date("2013-02-20T12:01:04.753Z")).valueOf()
Run Code Online (Sandbox Code Playgroud)

更好的可读性:

      var eventStartTime = new Date(event.startTime);
      var eventEndTime = new Date(event.endTime);
      var duration = eventEndTime.valueOf() - eventStartTime.valueOf();
Run Code Online (Sandbox Code Playgroud)

  • 这是最正确的方法,因为javascript在对对象进行算术运算时会在内部使用"valueOf".打字稿应该足够聪明(unfortunataly,它还没有)支持这个,因为它已经知道Date的valueOf方法返回一个在lib.d.ts中定义的数字 (3认同)

Jud*_*her 17

它不起作用,因为Date - Date依赖于TypeScript旨在防止的类型强制.

使用+前缀有一个解决方法:

Date.now()

或者,如果您不想使用valueOf():

Date - Date

见这里的讨论.

或者请参阅下面的Siddharth Singh的答案,以获得更优雅的解决方案 +


alt*_*hen 7

// TypeScript

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

// Explicitly convert Date to Number
const pastDaysOfYear = ( Number(today) - Number(firstDayOfYear) );
Run Code Online (Sandbox Code Playgroud)


ale*_*oem 5

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

这样typescript将日期转换为数字。

+new Date()- +new Date("2013-02-20T12:01:04.753Z")
Run Code Online (Sandbox Code Playgroud)

在此处,您可以创建公式以将差异转换为minuteshours