var range = getDates(new Date(), new Date().addDays(7));
Chciałbym, aby „zakres” był tablicą obiektów dat, po jednym na każdy dzień między dwiema datami.
Sztuczka polega na tym, że powinien również obsługiwać granice miesięcy i lat.
javascript
node.js
date
datetime
date-range
Scott Klarenbach
źródło
źródło
startDate
iendDate
? Ponieważ jeślistartDate
czas jest późniejszy niżstopDate
czas, to nie zostanie uwzględnionystopDate
w wyniku, prawda?Spróbuj tego, pamiętaj, aby uwzględnić moment js,
źródło
var dateArray = [];
Szczegóły tutajvar currentDate = moment(startDate);
jeśli używasz tej metody dwa razy w tej samej dacie moment.js, zdziwisz się, dlaczego działa ona po raz pierwszy. Dzieje się tak, ponieważ javascripts przekazuje obiekty przez referencję, więc funkcja kończy się dwukrotnym użyciem startDate (która jest już zmutowana). Poprawienie powyższej poprawki zapewnia, że pracujesz z nowymi i unikalnymi obiektami moment js w zakresie funkcji. Sprawdź to skrzypceSpojrzałem na wszystkie powyżej. Skończyło się na pisaniu siebie. Nie potrzebujesz do tego momentów . Natywna pętla for jest wystarczająca i ma największy sens, ponieważ istnieje pętla for do zliczania wartości w zakresie.
Jedna wkładka:
Długa wersja
Podaj daty pomiędzy:
Dni od minionej daty do teraz:
źródło
getDaysArray
? Nie dni między nimi.for (var arr=[], dt=new Date(start), ...)
. ;-)Używam moment.js i Twix.js, które zapewniają bardzo dobre wsparcie dla manpulacji daty i czasu
Mam to uruchomione na http://jsfiddle.net/Lkzg1bxb/
źródło
źródło
źródło
Jeśli używasz momentu, możesz użyć ich „oficjalnej wtyczki” do określania zakresów
moment-range
i wtedy staje się to trywialne.przykład węzła moment-zakres:
Przykład przeglądarki zakresu momentu:
przykład daty fns:
Jeśli używasz,
date-fns
toeachDay
jest twoim przyjacielem i otrzymujesz zdecydowanie najkrótszą i najbardziej zwięzłą odpowiedź:źródło
Właśnie natknąłem się na to pytanie, najłatwiej to zrobić za pomocą momentu:
Najpierw musisz zainstalować moment i zakres momentu:
źródło
Od jakiegoś czasu korzystam z rozwiązania @Mohammed Safeer i wprowadziłem kilka ulepszeń. Używanie sformatowanych dat jest złą praktyką podczas pracy w kontrolerach.
moment().format()
powinny być używane tylko do celów wyświetlania w widokach. Pamiętaj również, żemoment().clone()
zapewnia to oddzielenie od parametrów wejściowych, co oznacza, że daty wejściowe nie są zmieniane. Gorąco zachęcam do korzystania z moment.js podczas pracy z datami.Stosowanie:
startDate
,endDate
parametryinterval
parametr jest opcjonalny i ma wartość domyślną „dni”. Użyj interwałów wspieranych przez.add()
metodę (moment.js). Więcej szczegółów tutajtotal
parametr jest przydatny podczas określania interwałów w minutach. Domyślnie 1.Odwołać się:
Funkcjonować:
źródło
Używając ES6 masz Array. od co oznacza, że możesz napisać naprawdę elegancką funkcję, która pozwala na dynamiczne interwały (godziny, dni, miesiące).
źródło
new Date(2017,12,30)
jest 30 stycznia 2018 r., dla mnie zakres dat zaczyna się 29 stycznia 2018 r. Nie wszystkie dni mają długość 8,64e7 ms (24 godziny), w których obserwuje się czas letni. ;-)Niedawno pracowałem z moment.js, podążając za rozwiązaniami ..
Wynik byłby:
źródło
źródło
var
wcześniejstrDate
wewnątrz pętli while!d3js zapewnia wiele przydatnych funkcji i zawiera d3.time do łatwej manipulacji datami
https://github.com/d3/d3-time
Na specjalne życzenie:
Utc
lub czasu lokalnego
zakres będzie tablicą obiektów dat, które przypadają na pierwszą możliwą wartość każdego dnia
Możesz zmienić czas z dnia na godzinę, godzinę, miesiąc itp., aby uzyskać te same wyniki w różnych odstępach czasu
źródło
Oto jedna linijka, która nie wymaga żadnych bibliotek na wypadek, gdybyś nie chciał tworzyć innej funkcji. Po prostu zastąp startDate (w dwóch miejscach) i endDate (które są obiektami daty js) zmiennymi lub wartościami dat. Oczywiście, jeśli wolisz, możesz umieścić go w funkcji
źródło
Używam tej funkcji
źródło
Używam prostej pętli while do obliczania dat między datami
źródło
Uwaga: zdaję sobie sprawę, że jest to nieco inne niż żądane rozwiązanie, ale myślę, że wielu uzna to za przydatne.
Jeśli chcesz znaleźć każdy interwał „x” (dni, miesiące, lata itd.) Między dwiema datami, momentem.js i zakresem chwil pakiety rozszerzenia włącz tę funkcję.
Na przykład, aby znaleźć każdy 30 dzień między dwiema datami :
źródło
Wygeneruj tablicę lat:
Wygeneruj tablice na miesiąc:
Wygeneruj tablice na dni:
źródło
Możesz to łatwo zrobić za pomocą momentJS
Dodaj chwilę do swoich zależności
Następnie zaimportuj to do swojego pliku
Następnie użyj poniższego kodu, aby uzyskać listę wszystkich dat między dwiema datami
źródło
To może komuś pomóc,
https://gist.github.com/pranid/3c78f36253cbbc6a41a859c5d718f362.js
źródło
Oto gotowa metoda, która zaakceptuje daty lub ciągi znaków lub ich mieszaninę jako dane wejściowe i wygeneruje tablicę dat jako daty Moment. Jeśli nie chcesz, aby daty Moment były danymi wyjściowymi, zmień to, co
map()
zwraca metoda.źródło
@ softvar, ale z opcją daty pracy
źródło
Funkcjonować:
Stosowanie:
Mam nadzieję, że ci to pomoże
źródło