Jaki jest najprostszy sposób uzyskania instancji nowej daty(), ale ustawić godzinę o północy?Jaki jest najlepszy sposób na zainicjowanie daty JavaScript do północy?
Odpowiedz
Sposób setHours
może opcjonalne minutes
, seconds
i ms
argumenty, na przykład:
var d = new Date();
d.setHours(0,0,0,0);
To będzie ustawić czas 00:00:00.000
z aktualna strefa czasowa, jeśli chcesz pracować w czasie UTC, możesz użyć metody setUTCHours
.
Chciałem tylko wyjaśnić, że fragment z przyjętą odpowiedzi daje najbliższy północy w minionym:
var d = new Date();
d.setHours(0,0,0,0); // last midnight
Jeśli chcesz uzyskać najbliższy północy w przyszłości, należy użyć następującego kodu:
var d = new Date();
d.setHours(24,0,0,0); // next midnignt
Co się stanie, jeśli dzisiaj jest 25 godzin (zegary dostosowują się do czasu letniego)? – qntm
To jest skrypt po stronie klienta, północ jest północą, pomimo oszczędności światła dziennego. Warto również wspomnieć ... nie każde miejsce na świecie korzysta z DST (czas letni) – chris
@qntm: zmiana czasu na letni jest zawsze stosowana o 2 rano 4 am, tak, że będzie to tylko jedna północ w ciągu tego dnia :). Ale tak, 3am może zdarzyć się dwa razy w ciągu dnia (facepalm) – Dan
Dodając przydatność do przykładu @ Dana, musiałem znaleźć następny dzień lub północ.
var d = new Date();
if(d.getHours() < 12) {
d.setHours(12,0,0,0); // next midnight/midday is midday
} else {
d.setHours(24,0,0,0); // next midnight/midday is midnight
}
To pozwoliło mi ustawić ograniczenie liczby na razie tylko pozwalając mu się zdarzyć raz rano i raz po południu dla wszystkich odwiedzających na mojej stronie. Data przechwycona została użyta do ustawienia wygaśnięcia pliku cookie.
one-liner do configs obiektu:
new Date(new Date().setHours(0,0,0,0));
podczas tworzenia elementu:
dateFieldConfig = {
name: "mydate",
value:
new Date(
new Date().
setHours(
0, 0, 0, 0)),
}
Dzięki! zastanawiałem się, jak mogę to zrobić w jednym wierszu, ponieważ ustawiłem właściwość obiektu! Świetna odpowiedź. –
prostu będzie dodać to tutaj, bo wylądował na tej stronie patrząc na, jak to zrobić w moment.js i inne mogą również.
[Uzasadnienie: słowo „moment” już pojawia się w innym miejscu na tej stronie tak wyszukiwarek kierować tutaj, a moment.js jest na tyle powszechne, by uzasadnić na czym pokryte dzieje, jak często jest ona wymieniona w innym terminie związanych SO pytania]
Tak, w wersji 2.0.0 i powyżej:
date.startOf('day');
dla wcześniejszych wersjach:
date.sod();
Docs:
aby odzyskać obiekt daty, użyj tego 'momentu (DATE_OBJECT) .startOf (" dzień "). ToDate();' – xinthose
tak, dodajmy bibliotekę javascript 52kb, aby zrobić coś, co możesz zrobić w 2 linijkach. –
A co, jeśli już używasz pliku moment.js do jednego z wielu dobrych powodów, dla których mógłbyś ...? Co powiesz na przeczytanie racjonalnego uzasadnienia, zanim dodasz sarkastyczny komentarz? – andyhasit
Prawdopodobnie można użyć
new Date().setUTCHours(0,0,0,0)
jeśli trzeba wartość tylko raz.
Nie powoduje to wystąpienia daty, zgodnie z wymaganym PO. – cobberboy
Jeśli obliczenia z datami summertime spowoduje często 1 lub więcej godzin lub godzinę mniej niż północ (CEST). Powoduje to 1-dniową różnicę po zwrocie dat. Tak więc daty muszą zaokrąglić się do najbliższej północy.Więc kod będzie (tys do Jamison):
var d = new Date();
if(d.getHours() < 12) {
d.setHours(0,0,0,0); // previous midnight day
} else {
d.setHours(24,0,0,0); // next midnight day
}
var a = new Array();
\t \t \t \t \t var b = new Array();
\t \t \t \t \t var c = new Array();
\t \t \t \t \t var date = new Date().toJSON();
\t \t \t \t \t a = date.split("T");
\t \t \t \t \t a = a[0];
\t \t \t \t \t b = a.split("-");
\t \t \t \t \t var currentDate = new Date(b[0],b[1] , b[2] -29 ,-19,30,0).toJSON();
\t \t \t \t \t c = currentDate.split(".");
\t \t \t \t \t var newDate = c[0];
console.log(newDate);
Kudos dla kreatywności: D –
W przypadku jeśli masz już d3.js jako zależność w projekcie, czy nie przeszkadza przenosząc je w , d3-time (d3.js library is modular as of v4.0.0) ma numer Intervals.
Mogą okazać się przydatne przy ustawianiu dat na "domyślne" wartości, np. północy, 0,00 sekundy, pierwszy od miesiąca, itp
var d = new Date(); // Wed Aug 02 2017 15:01:07 GMT+0200 (CEST)
d3.timeHour(d) // Wed Aug 02 2017 00:00:00 GMT+0200 (CEST)
d3.timeMonth(d) // Tue Aug 01 2017 00:00:00 GMT+0200 (CEST)
Zauważyłem trend w pytaniach związanych z JavaScriptem napisanych na SO: bez względu na złożoność rozwiązań proponowanych przy użyciu natywnego JS, wszelkie odpowiedzi dotyczące problemu przy pomocy zewnętrznej biblioteki będą nieuchronnie niektóre momenty zostaną obniżone. Zdając sobie z tego sprawę, zadbałem o opublikowanie mojej odpowiedzi w krótkim przedmowie: _W przypadku, gdy masz już example.js jako zależność_. A jednak nadal w dół, anonimowy użytkownik SO? to boli, człowieku: "- ( – Peemster
Upadłem, że ta odpowiedź nie powinna zostać odrzucona, tym bardziej, że propozycja użycia chwili.js ma 16 głosów w górę (w chwili pisania tego komentarza).Rozwiązuje problem w bardzo zwięzły i nie tak oczywisty sposób. – lukeatdesignworks
- 1. Jaki jest najlepszy sposób profilowania wykonywania javascript?
- 2. Jaki jest najlepszy sposób na seed srand()?
- 3. Jaki jest najlepszy sposób na wdrożenie "timera"?
- 4. Jaki jest najlepszy sposób na skopiowanie listy?
- 5. Jaki jest najlepszy sposób na naukę Erlanga?
- 6. Jaki jest najlepszy sposób na naukę CUDA?
- 7. Jak obliczyć ms od północy w JavaScript
- 8. Jaki jest najlepszy sposób na znalezienie odwrotności datetime.isocalendar()?
- 9. Jaki jest najlepszy sposób uzyskania cookie według nazwy w JavaScript?
- 10. jaki jest najlepszy sposób zastosowania maski do EditText na Androida?
- 11. Jaki jest najlepszy sposób na wprowadzenie logowania do usługi sieciowej?
- 12. Jaki jest najlepszy sposób na wstrzyknięcie repozytoriów do kontrolera ASP.NET
- 13. Jaki jest najlepszy sposób filtrowania listy obiektów JSON w JavaScript?
- 14. Jaki jest najlepszy sposób kodowania/ochrony kodu javascript?
- 15. Jaki jest najlepszy sposób tworzenia prostych funkcji filtru w javascript?
- 16. jaki jest najlepszy sposób na parsowanie odpowiedzi xml w AJAX
- 17. Jaki jest najlepszy sposób ustalenia, czy data jest dzisiaj w JavaScript?
- 18. Jaki jest najlepszy sposób debugowania wywołań AJAX do PHP?
- 19. Jaki jest najlepszy sposób zamknięcia gałęzi Mercurial?
- 20. Jaki jest najlepszy sposób na znalezienie daty "następny, ale jeden najnowszy" w SQL?
- 21. Jaki jest najlepszy kod JavaScript do utworzenia elementu img?
- 22. Jaki jest najlepszy sposób obsługi wielu działań?
- 23. idiomatyczny sposób na zainicjowanie Scala ArrayBuffer?
- 24. Jaki jest najlepszy sposób uczenia się WCF?
- 25. Jaki jest najlepszy sposób na sparsowanie zlokalizowanych liczb z .NET/Razor w javascript?
- 26. Jaki jest najlepszy sposób przetestowania aplikacji szyny?
- 27. Jaki jest najlepszy sposób wyczyszczenia tablicy łańcuchów?
- 28. Jaki jest najlepszy sposób tworzenia wewnętrznych produktów?
- 29. Jaki jest najlepszy sposób tworzenia wdrożeń ClickOnce
- 30. Jaki jest najlepszy sposób przetestowania narzędzia RedirectToAction?
FYI, używam tej metody (d.setHours (0,0,0,0)) w funkcji ograniczenia na 270K rzędach, a to ponad 20 sekund szybciej niż robi d.setHours (0); d.setMinutes (0); d.setSeconds (0); Świetna odpowiedź @CMS! – jbnunn
Należy to zrobić w dwóch wierszach, aby zachować d jako obiekt Date. Niedawno naprawiłem błąd, który spowodował to w jednym wierszu: var d = new Date(). SetHours (0, 0, 0, 0). Jednak d był wtedy liczbą, a nie datą, ponieważ setHours zwraca liczbę. – Jason
Właśnie się z tym zetknąłem (spóźniałem się na imprezę, którą znam), potrzebuję też rozwiązania jednoliniowego zwracającego datę. Dla każdego, kto tego chce, [odpowiedź @ Zona] (https://stackoverflow.com/questions/3894048/what-is-the-best-way-to-initialize-a-javascript-date-to-midnight#answer- 30100627) działa idealnie: 'nowa data (nowa data(). SetHours (0,0,0,0))'. – SRack