Jak dodać dni do prądu Date
za pomocą JavaScript. Czy JavaScript ma wbudowaną funkcję taką jak .Net AddDay
?
javascript
date
datetime
time
Popiół
źródło
źródło
Date.prototype.addDays=function(d){return new Date(this.valueOf()+864E5*d);};
864E5
z jakiegoś powodu wolę pisać24*60*60
w moim kodzie :)Prawidłowa odpowiedź :
Niepoprawna odpowiedź :
Ta odpowiedź czasami zapewnia poprawny wynik, ale bardzo często zwraca niewłaściwy rok i miesiąc. Ta odpowiedź działa tylko wtedy, gdy data, do której dodajesz dni, przypada na bieżący rok i miesiąc.
Dowód / przykład
Sprawdź to JsFiddle
Pokaż fragment kodu
źródło
Uważaj, ponieważ może to być trudne. Ustawienie „jutro” działa tylko dlatego, że jego bieżąca wartość odpowiada rokowi i miesiącowi dla „dzisiaj”. Jednak ustawienie numeru daty, takiego jak „32”, normalnie nadal będzie działać dobrze, aby przenieść go na następny miesiąc.
źródło
var d = new Date(); d.setDate( d.getDate() + 1 );
?getDate()
zwraca dzień tego roku . Następnie dzwonieniesetDate
ustawia dzień w bieżącym roku . Więc to NIE jest dobre ogólne rozwiązanie. @ Odpowiedź AnthonyWJones faktycznie działa poprawnie.var d = new Date(2015,11,30);d.setDate(d.getDate() + 370)
Daje 3 stycznia 2017 r., Który przekracza 2 lata.Moje proste rozwiązanie to:
to rozwiązanie nie ma problemu z czasem letnim. Można również dodawać / subskrybować dowolne przesunięcie na lata, miesiące, dni itp.
jest poprawnym kodem.
źródło
setDate
.Te odpowiedzi wydają mi się mylące, wolę:
getTime () daje nam milisekundy od 1970 roku, a 86400000 to liczba milisekund w ciągu dnia. Zatem ms zawiera milisekundy dla żądanej daty.
Użycie konstruktora milisekundowego daje pożądany obiekt daty.
źródło
new Date(new Date('11/4/2012').getTime() + 86400000)
Próbować
Za pomocą setDate (), aby dodać datę, nie rozwiążesz problemu, spróbuj dodać kilka dni do miesiąca lutego, jeśli spróbujesz dodać do niej nowe dni, nie da to tego, czego się spodziewałeś.
źródło
setDate()
? Czy to tak: stackoverflow.com/questions/5497637/…Po prostu spędziłem wieki, próbując ustalić, jaka była umowa z rokiem, nie dodając, postępując zgodnie z poniższymi przykładami wiodącymi.
Jeśli chcesz po prostu dodać n dni do swojej daty, najlepiej po prostu przejść:
lub wersja z długim wiatrem
To dziś / jutro jest mylące. Ustawiając bieżącą datę w nowej zmiennej daty, zepsujesz wartość roku. jeśli pracujesz od pierwotnej daty, nie będziesz.
źródło
Jeśli możesz, użyj moment.js . JavaScript nie ma bardzo dobrych metod natywnej daty / godziny. Oto przykładowa składnia Moment:
Odniesienie: http://momentjs.com/docs/#/manipicing/add/
źródło
CodePen
źródło
Te rozszerzenia utworzyłem ostatniej nocy:
możesz przekazać wartości dodatnie lub ujemne;
przykład:
źródło
Bez użycia drugiej zmiennej możesz zastąpić 7 następnymi x dniami:
źródło
odjąć 30 dni użytkowania (24h = 86400000 ms)
Pokaż fragment kodu
źródło
Najprostsze rozwiązanie.
źródło
Dziękuję Jasonowi za odpowiedź, która działa zgodnie z oczekiwaniami, oto mieszanka kodu i przydatnego formatu AnthonyWJones:
źródło
Późno do partii,
ale jeśli używasztam doskonały plugin o nazwie Moment:jQuery
wtedyhttp://momentjs.com/
http://momentjs.com/docs/#/manipicing/
I jest tam wiele innych dobrych rzeczy!
Edycja: odniesienie do jQuery zostało usunięte dzięki komentarzowi aikeru
źródło
Rozwiązanie zaprojektowane dla operatora rurociągu :
Stosowanie:
Jeśli potrzebujesz więcej funkcji, sugeruję zajrzenie do biblioteki date-fns .
źródło
Stary, wiem, ale czasem mi się podoba:
źródło
Date.prototype.addDays = function(days) {return new Date(this.getTime() + (864e5 * days));};
Miałem problemy z czasem letnim związanym z proponowanym rozwiązaniem.
Używając
getUTCDate
/setUTCDate
zamiast, rozwiązałem swój problem.źródło
Możesz używać JavaScript, nie wymaga jQuery:
źródło
Ogólny prototyp bez zmiennych, ma zastosowanie do istniejącej wartości daty:
źródło
Dokumenty mozilla dla setDate () nie wskazują, że będzie on obsługiwał scenariusze na koniec miesiąca. Zobacz https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date
ustawić datę()
Dlatego używam setTime (), kiedy muszę dodać dni.
źródło
Tak proste jak to:
źródło
Wydaje mi się, że dam również odpowiedź:
osobiście lubię próbować unikać nieuzasadnionej deklaracji zmiennych, wywołań metod i wywołań konstruktorów, ponieważ wszystkie one są drogie pod względem wydajności. (oczywiście w granicach rozsądku)
zamierzałem zostawić to jako komentarz pod odpowiedzią udzieloną przez @AnthonyWJones, ale lepiej się nad tym zastanowić.
Powyższe będzie przestrzegać DST. Oznacza to, że jeśli dodasz liczbę dni przekraczających czas letni, wyświetlany czas (godzina) zmieni się, aby to odzwierciedlić.
Przykład:
2 listopada 2014 02:00 był końcem czasu letniego.
Jeśli chcesz zachować czas w DST (więc 10:30 nadal będzie 10:30) ...
Więc teraz masz ...
źródło
Nie, javascript nie ma wbudowanej funkcji, ale możesz użyć prostej linii kodu
źródło
Używam czegoś takiego jak:
Działa z oszczędnością czasu:
Działa z nowym rokiem:
Można go sparametryzować:
źródło
Korzystam z następującego rozwiązania.
Date ma konstruktor, który akceptuje liczbę całkowitą. Ten argument reprezentuje całkowitą liczbę milisekund przed / po 1 stycznia 1970 r. Posiada również metodę setTime, która robi to samo bez tworzenia nowego obiektu Date.
To, co tutaj robimy, to konwersja dni na milisekundy i dodanie tej wartości do wartości podanej przez getTime. Na koniec podajemy wynik konstruktorowi Date (milisekundy) lub metodzie setTime (milisekundy).
źródło
now.setDate(now.getDate() + days);
automatycznie obsługuje zmiany czasu letniego. I muszę poprawić, sekundy przestępne są ignorowane w znacznikach czasu JS.Edycja: Zamiast
setTime()
(lubsetHours()
) możesz to zrobić w ten sposób:Stary:
Zamiast używać
setTime()
możesz użyćsetHours()
:Zobacz JSFiddle ...
źródło
d.setDate(d.getDate() + 1);
Bardzo prosty kod do dodawania dni w skrypcie Java.
źródło
Istnieje metoda setDate i getDate , które pozwalają zrobić coś takiego:
Jeśli chcesz odjąć liczbę dni i sformatować datę w formacie czytelnym dla człowieka, powinieneś rozważyć utworzenie niestandardowego
DateHelper
obiektu, który wygląda mniej więcej tak:(zobacz także to skrzypce )
źródło
Rozszerzenie prototypu w javascript może nie być dobrym pomysłem , szczególnie w profesjonalnych kodach.
Co chcesz zrobić, to rozszerzyć
Date
klasę natywną :W ten sposób, jeśli pewnego dnia JavaScript wdroży natywną
addDays
metodę, niczego nie zepsujesz.źródło