Działa to w Javascript
new Date()-new Date("2013-02-20T12:01:04.753Z")
Ale w maszynopisie nie mogę spocząć na dwóch nowych datach
Date("2013-02-20T12:01:04.753Z")
Nie pracuj, ponieważ paremater nie pasuje do podpisu daty
Działa to w Javascript
new Date()-new Date("2013-02-20T12:01:04.753Z")
Ale w maszynopisie nie mogę spocząć na dwóch nowych datach
Date("2013-02-20T12:01:04.753Z")
Nie pracuj, ponieważ paremater nie pasuje do podpisu daty
Odpowiedzi:
Użyj tej getTime
metody, aby uzyskać całkowity czas w milisekundach od 01.01.1970 i odejmij te:
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()
używać Date.now()
, aby niepotrzebnie nie tworzyć nowych obiektów.
Oto jak należy to zrobić na maszynie:
(new Date()).valueOf() - (new Date("2013-02-20T12:01:04.753Z")).valueOf()
Lepsza czytelność:
var eventStartTime = new Date(event.startTime);
var eventEndTime = new Date(event.endTime);
var duration = eventEndTime.valueOf() - eventStartTime.valueOf();
eventStartTime
i eventEndTime
ten czas trwania zostanie wpisany jako a number
(co oznacza, że jeśli dosłownie weźmiesz tutaj trzecią linię kodu, czas trwania będzie tutaj liczbą)
To nie działa, ponieważ Date - Date
opiera się dokładnie na rodzaju przymusu typu, który ma zapobiegać TypeScript.
Istnieje obejście tego problemu za pomocą +
przedrostka:
var t = Date.now() - +(new Date("2013-02-20T12:01:04.753Z");
Lub, jeśli wolisz nie używać Date.now()
:
var t = +(new Date()) - +(new Date("2013-02-20T12:01:04.753Z"));
Lub zobacz odpowiedź Siddhartha Singha poniżej, aby uzyskać bardziej eleganckie rozwiązanie valueOf()
Aby obliczyć różnicę, musisz umieścić +
operator,
w ten sposób typescript
zamienia daty na liczby.
+new Date()- +new Date("2013-02-20T12:01:04.753Z")
Stamtąd możesz utworzyć formułę, aby przekonwertować różnicę na minutes
lub 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) );