Jak mogę obliczyć wczoraj jako datę w JavaScript?
javascript
date
Omega
źródło
źródło
getDate
zwraca dzień miesiąca (np. 1–31), ale w rzeczywistościsetDate(0)
ustawia datę na ostatni dzień poprzedniego miesiąca. Czy to działa jednak we wszystkich przeglądarkach?Niezbyt wydajny, ale jak oneliner:
Powyżej tworzy trzy
Date
przedmioty, które są niepotrzebnie marnotrawione. Można to zredukować do pojedynczej instancji za pomocą:Lub, jeśli wolisz:
Lub, jeśli wolisz ES6 z funkcją strzałki:
źródło
var yesterday = (function(d){ d.setDate(d.getDate()-1); return d})(new Date)
Spróbuj tego
źródło
Zaskakująco żadna odpowiedź nie wskazuje na najłatwiejsze rozwiązanie dla wielu przeglądarek
Aby znaleźć dokładnie tę samą wczoraj:
To znaczy, jeśli chcesz przejść na uzależnienie za darmo, w przeciwnym razie poleciłbym użycie http://momentjs.com
źródło
Aby uogólnić pytanie i wykonać inne obliczenia różnic, użyj:
tworzy to nowy obiekt daty na podstawie wartości „teraz” jako liczby całkowitej, która reprezentuje epokę unixową w milisekundach odejmując jeden dzień.
Dwa dni temu:
Godzinę temu:
źródło
new Date(Date.parse(new Date()) - 86400000)
. Chociaż lubię Date.now (), więc może spróbuję zamiast tego. Zaoszczędzi to dodatkową datę.Korzystam z biblioteki momentów , jest ona bardzo elastyczna i łatwa w użyciu.
W Twoim przypadku:
źródło
subtract
zamiastadd
źródło
źródło
źródło
To wyprodukuje wczoraj o 00:00 z precyzją minut
źródło
da rade
źródło
d.setHours(-1,0,0,0)
.Spróbuj, działa dla mnie:
To dało mi wczoraj obiekt randkowy
źródło
var yesterday = new Date(); yesterday.setDate(today.GetDate() - 1)
więc możesz korzystać zarówno dziś, jak i wczorajOto jedna linijka, która służy do uzyskania wczorajszej daty w formacie RRRR-MM-DD w tekście i obsługi przesunięcia strefy czasowej.
Można oczywiście zmienić datę powrotu, x dni wstecz. Aby uwzględnić czas itp.
źródło
Jeśli chcesz zarówno uzyskać datę wczorajszą, jak i sformatować ją w formacie czytelnym dla człowieka, rozważ utworzenie niestandardowego
DateHelper
obiektu, który wygląda mniej więcej tak:(zobacz także to skrzypce )
źródło
Możesz użyć momentjs, dzięki tej bibliotece możesz osiągnąć wiele rzeczy.
Uzyskaj wczorajszą datę z bieżącym czasem
moment().subtract(1, 'days').toString()
Uzyskaj wczorajszą datę z datą rozpoczęcia
moment().subtract(1, 'days').startOf('day').toString()
źródło
rozwiązać problem daty granicznej (2020, 01, 01) -> 2019, 12, 31
źródło
„Date.now () - 86400000” nie będzie działać w dniu końcowym czasu letniego (który ma 25 godzin tego dnia)
Inną opcją jest użycie Zamknięcia:
źródło