Jak mogę dodać 10 sekund do obiektu daty JavaScript?
Coś takiego:
var timeObject = new Date()
var seconds = timeObject.getSeconds() + 10;
timeObject = timeObject + seconds;
Jak mogę dodać 10 sekund do obiektu daty JavaScript?
Coś takiego:
var timeObject = new Date()
var seconds = timeObject.getSeconds() + 10;
timeObject = timeObject + seconds;
Odpowiedzi:
Istnieje również setSecondsmetoda:
var t = new Date();
t.setSeconds(t.getSeconds() + 10);
Aby uzyskać listę innych Date funkcji, powinieneś sprawdzić MDN
setSeconds będzie poprawnie obsługiwać przypadki zawijania:
var d;
d = new Date('2014-01-01 10:11:55');
alert(d.getMinutes() + ':' + d.getSeconds()); //11:55
d.setSeconds(d.getSeconds() + 10);
alert(d.getMinutes() + ':0' + d.getSeconds()); //12:05
typeof new Date().getSeconds()zwraca 'number'w węźle, więc myślę, że możesz mieć inne problemy (chyba że używasz przestarzałej wersji węzła lub czegoś takiego).
d.setSeconds(d.getSeconds() - 92);a skończysz z różnicą 2'32 "zamiast 1'32". Rozwiązanie z new Date(d.getTime() - 92*1000);działa jednak!
// let timeObject = new Date();
// let seconds = 10 * 1000; // 10000 milliseconds
timeObject = new Date(timeObject.getTime() + seconds);
Tylko dla maniaków wydajności wśród nas.
var d = new Date('2014-01-01 10:11:55');
d = new Date(d.getTime() + 10000);
5 196 949 Operacji / s, najszybciej
var d = new Date('2014-01-01 10:11:55');
d.setSeconds(d.getSeconds() + 10);
2 936 604 operacji / s, o 43% wolniej
var d = new moment('2014-01-01 10:11:55');
d = d.add(10, 'seconds');
22,549 operacji / s, 100% wolniej
Może więc jest to najmniej czytelna dla człowieka (nie taka zła), ale najszybsza droga :)
const timeObject = new Date();
timeObject = new Date(timeObject.getTime() + 1000 * 10);
console.log(timeObject);
Zobacz także: Jak dodać 30 minut do obiektu daty JavaScript?
var timestamp = Date.parse("2011-03-26T20:59:59.999Z"); var d = new Date(timestamp); d.setSeconds(d.getSeconds() + 10); console.log(d.getTime() - timestamp);
timeObject.setSeconds(timeObject.getSeconds() + 10)
Date()Obiektu w JavaScript nie jest to naprawdę mądry.
Jeśli skupisz się na dodawaniu sekund, wydaje się, że poradzisz sobie płynnie, ale jeśli spróbujesz dodać liczbę X sekund, dodaj liczbę X minut i godzin itp. Do tego samego Dateobiektu , co spowoduje kłopoty. Więc po prostu wróciłem do korzystania tylko z tej setSeconds()metody i konwertowania danych na sekundy (co działało dobrze).
Jeśli ktokolwiek może zademonstrować dodanie czasu do Date()obiektu globalnego przy użyciu wszystkich ustawionych metod, a czas końcowy wyszedł poprawnie, chciałbym go zobaczyć, ale mam wrażenie, że jedna metoda zestawu powinna być używana jednocześnie na danym Date()obiekcie i mieszanie ich prowadzi do bałaganu.
var vTime = new Date();
var iSecondsToAdd = ( iSeconds + (iMinutes * 60) + (iHours * 3600) + (iDays * 86400) );
vTime.setSeconds(iSecondsToAdd);
możesz użyć tej setSecondsmetody, zdobywając sekundy od dzisiaj i dodając w niej 10 sekund
var today = new Date();
today.setSeconds(today.getSeconds() + 10);Możesz dodać 10 * 1000 milisekund do nowej daty:
var today = new Date();
today = new Date(today.getTime() + 1000*10);Możesz użyć setTime:
today.setTime(now.getTime() + 10000)Wypróbuj w ten sposób
Date.prototype.addSeconds = function(seconds) {
var copiedDate = new Date(this.getTime());
return new Date(copiedDate.getTime() + seconds * 1000);
}
Wystarczy zadzwonić i przypisać new Date().addSeconds(10)