Dziwi mnie, że obiekt Date JavaScript nie implementuje żadnej funkcji dodawania.
Chcę po prostu funkcji, która może to zrobić:
var now = Date.now();
var fourHoursLater = now.addHours(4);
function Date.prototype.addHours(h) {
// how do I implement this?
}
Chciałbym tylko kilka wskazówek w jednym kierunku.
Czy muszę parsować ciągi znaków?
Czy mogę używać setTime?
Co powiesz na milisekundy?
Lubię to:
new Date(milliseconds + 4*3600*1000 /*4 hrs in ms*/)?
Wydaje się to jednak naprawdę hackerskie - i czy to w ogóle działa?
javascript
datetime
Jeff Meatball Yang
źródło
źródło
Test:
źródło
var date = new Date(2012, 10, 22, 23, 0, 1); date.toString(); // Thu Nov 22 2012 23:00:01 GMT+0100 (CET) date.setHours(date.getHours() + 1); date.toString(); // Fri Nov 23 2012 00:00:01 GMT+0100 (CET)
Działa również dobrze z setMinutes ()Poniższy kod ma dodać 4 godziny do tej pory (przykład dzisiejszej daty)
Nie spowoduje błędu, jeśli spróbujesz dodać 4 do 23 (zobacz dokumenty ):
źródło
setTime
lubsetUTCHour
.Prawdopodobnie lepiej jest uczynić metodę addHours niezmienną, zwracając kopię obiektu Date, zamiast mutować jego parametr.
W ten sposób możesz połączyć wiele wywołań metod bez martwienia się o stan.
źródło
add*
to jest powszechnie używane do mutowania samego obiektu.add
jest często używany wDateTime
klasie frameworka .NET i ma takie samo znaczenie jak+
(plus) w matematyce.currentDate.addHours(1)
<- Z mojego instynktu programistycznego oczekuję, żecurrentDate
wartość się zmieni, ale w twojej implementacji tak się nie stanie. Co do tego, dlaczego sugeruję zmienić nazwę lub zmienić jej podpis na cośadd
Wersja sugerowana przez kennebec nie powiedzie się przy zmianie na lub z czasu letniego, ponieważ jest to ustawiony numer godziny.
doda
h
godziny dothis
osobliwości systemu czasu. Metoda Jasona Harwiga również działa.źródło
Możesz skorzystać z biblioteki momentjs http://momentjs.com/ Library.
źródło
Myślę również, że oryginalny obiekt nie powinien być modyfikowany. Aby więc uratować przyszłą siłę roboczą, oto połączone rozwiązanie oparte na odpowiedziach Jasona Harwiga i Tahira Hasana :
źródło
W bibliotece Datejs znajduje się dodatek .
A oto metody daty JavaScript . kennebec mądrze wspominał getHours () i setHours ();
źródło
Sprawdź, czy nie jest jeszcze zdefiniowany, w przeciwnym razie zdefiniuje go w prototypie Data:
źródło
Innym sposobem na poradzenie sobie z tym jest przekonwertowanie daty na czas uniksowy (epoka), następnie dodanie ekwiwalentu za (mili) sekundy, a następnie konwersja z powrotem. W ten sposób możesz obsługiwać przejścia dnia i miesiąca, na przykład dodając 4 godziny do 21, co powinno skutkować następnego dnia, 01:00.
źródło
Aby uzyskać prostą funkcję dodawania / odejmowania godziny / minuty w javascript, spróbuj tego:
Można tego użyć bez parametrów, aby uzyskać bieżący czas
lub z parametrami, aby uzyskać czas z dodanymi minutami / godzinami
działa nawet czas ujemny
ta funkcja zwraca tablicę
źródło
SPRBRN jest poprawny. Aby uwzględnić początek / koniec miesiąca i roku, musisz przejść na Epokę iz powrotem.
Oto jak to zrobić:
lub zrób to w jednym wierszu (gdzie nazwy zmiennych są takie same jak powyżej:
źródło
Jest to prosty sposób na uzyskanie zwiększonej lub zmniejszonej wartości danych.
źródło
Trochę bałagan, ale działa!
Biorąc pod uwagę taki format daty: 2019-04-03T15: 58
Twój wynik wyniósłby: 2019-04-03T16: 58
źródło