Điều này hoạt động trong Javascript
new Date()-new Date("2013-02-20T12:01:04.753Z")
Nhưng trong bản thảo tôi không thể nghỉ hai Ngày mới
Date("2013-02-20T12:01:04.753Z")
Đừng làm việc vì paremater không khớp chữ ký ngày
Điều này hoạt động trong Javascript
new Date()-new Date("2013-02-20T12:01:04.753Z")
Nhưng trong bản thảo tôi không thể nghỉ hai Ngày mới
Date("2013-02-20T12:01:04.753Z")
Đừng làm việc vì paremater không khớp chữ ký ngày
Câu trả lời:
Sử dụng getTime
phương pháp để có được thời gian tính bằng mili giây kể từ 1970-01-01 và trừ đi:
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()
dụng Date.now()
để bạn không tạo các đối tượng mới một cách không cần thiết.
Đây là cách nó nên được thực hiện trong bản thảo:
(new Date()).valueOf() - (new Date("2013-02-20T12:01:04.753Z")).valueOf()
Dễ đọc hơn:
var eventStartTime = new Date(event.startTime);
var eventEndTime = new Date(event.endTime);
var duration = eventEndTime.valueOf() - eventStartTime.valueOf();
eventStartTime
và eventEndTime
thời lượng đó được nhập là number
(nghĩa là nếu bạn thực sự lấy dòng mã thứ ba ở đây thì thời lượng sẽ là một con số)
Nó không hoạt động vì Date - Date
phụ thuộc chính xác vào loại cưỡng chế TypeScript được thiết kế để ngăn chặn.
Có một cách giải quyết này bằng cách sử dụng +
tiền tố:
var t = Date.now() - +(new Date("2013-02-20T12:01:04.753Z");
Hoặc, nếu bạn không thích sử dụng Date.now()
:
var t = +(new Date()) - +(new Date("2013-02-20T12:01:04.753Z"));
Hoặc xem câu trả lời của Siddharth Singh, bên dưới, để biết giải pháp thanh lịch hơn bằng cách sử dụng valueOf()
Để tính toán chênh lệch, bạn phải đặt +
toán tử,
cách đó typescript
chuyển đổi ngày thành số.
+new Date()- +new Date("2013-02-20T12:01:04.753Z")
Từ đó bạn có thể tạo một công thức để chuyển đổi sự khác biệt thành minutes
hoặc 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) );