ใช้งานได้ใน Javascript
new Date()-new Date("2013-02-20T12:01:04.753Z")
แต่ใน typescript ฉันไม่สามารถพักสองวันใหม่ได้
Date("2013-02-20T12:01:04.753Z")
ไม่ทำงานเพราะ paremater ไม่ตรงกับลายเซ็นวันที่
ใช้งานได้ใน Javascript
new Date()-new Date("2013-02-20T12:01:04.753Z")
แต่ใน typescript ฉันไม่สามารถพักสองวันใหม่ได้
Date("2013-02-20T12:01:04.753Z")
ไม่ทำงานเพราะ paremater ไม่ตรงกับลายเซ็นวันที่
คำตอบ:
ใช้getTime
วิธีการรับเวลาเป็นมิลลิวินาทีรวมตั้งแต่ 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()
เพื่อให้คุณไม่สร้างวัตถุใหม่โดยไม่จำเป็น
นี่คือวิธีที่ควรทำใน 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();
eventStartTime
และeventEndTime
ช่วงเวลานั้นก็จะพิมพ์เป็นnumber
(หมายถึงถ้าคุณใช้รหัสบรรทัดที่สามที่นี่ด้วยตัวเองที่นี่ระยะเวลาจะเป็นตัวเลข)
มันไม่ทำงานเพราะ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) );