Chciałbym iterować przez szereg dat kalendarzowych, każda iteracja jest +1 dzień. Chciałbym użyć czegoś zbudowanego wokół JodaTime w Javie - czy jest coś podobnego w NodeJS?Powtórzenie zakresu dat w NodeJS
Odpowiedz
Można użyć moment.js w node.js aplikacji.
npm install moment
Następnie można bardzo łatwo to zrobić:
var moment = require('moment');
var a = moment('2013-01-01');
var b = moment('2013-06-01');
// If you want an exclusive end date (half-open interval)
for (var m = moment(a); m.isBefore(b); m.add(1, 'days')) {
console.log(m.format('YYYY-MM-DD'));
}
// If you want an inclusive end date (fully-closed interval)
for (var m = moment(a); m.diff(b, 'days') <= 0; m.add(1, 'days')) {
console.log(m.format('YYYY-MM-DD'));
}
Hmmm ... to wygląda jak kod, który już napisałem w swoim własnym odpowiedź. Moment.js jest popularniejszą biblioteką zawierającą mnóstwo funkcji, ale zastanawiam się, która z nich działa lepiej? Być może możesz przetestować i dać nam znać. :)
Ale żaden z nich nie robi tak dużo jak JodaTime. Do tego potrzebna jest biblioteka, która implementuje TZDB w JavaScript. Mam listę some of those here.
Pamiętaj też ogólnie o problems with JavaScript dates. Wpływa to również na NodeJS.
Użyj ramy https://github.com/JerrySievert/node-date-utils, można iteracyjne łatwo tak:
require('date-utils');
var d = new Date('2013-01-01');
var e = new Date('2013-06-01');
for(var i = d; i.isBefore(e); i.addDays(1)) {
console.log(i.toFormat("YYYY-MM-DD"));
}
Proponuję zmianę wcześniejszej odpowiedzi udzielonej przez Matta. Jego kod spowoduje mutację na obiekcie a
. spróbuj tego ...
var moment = require('moment');
var a = moment('2013-01-01');
var b = moment('2013-06-01');
for (var m = moment(a); m.isBefore(b); m.add('days', 1)) {
console.log(m.format('YYYY-MM-DD'));
}
Dobre złapanie! Tęsknie za tym. –
tyle, ile istnieje wiele narzędzi do tego, mogą być kłopotliwe do integracji użytecznym pętli sprawdzić przed danymi.
To powinno wystarczyć. Może to być przesada, ale możesz z łatwością uczynić to bardziej opartym na argumentach.
var moment = require('moment');
var _ = require('lodash');
function(collectionsWithDateValues){
var slots = [];
var hours = {
start: 7, // 7am
end: 21, // 9pm
window: 2 // How long each item should be slotted for.
};
var rightNow = moment().add(0, 'days').hours(hours.start).minute(0).second(0);
var cutoff = moment(rightNow).add(14,'days'); // Check the next 2 weeks.
for(rightNow ; rightNow.isBefore(cutoff) ; rightNow.add(hours.window, 'hours')){
// Check if we're going beyond the daily cutoff, go to the next day
if(rightNow.isAfter(moment(rightNow).hour(hours.end))){
rightNow.add(1, 'days').hour(hours.start);
}
var foundClash = false;
_.forEach(collectionsWithDateValues, function(item){
// Check if the item is within now and the slotted time
foundClash = moment(item.date).isBetween(rightNow, moment(rightNow).add(hours.window, 'hours').subtract(1, 'minutes').seconds(59));
});
if(!foundClash){
slots.push(rightNow.toString());
}
}
return slots;
}
- 1. Podział zakresu dat na fragmenty zakresu dat
- 2. Tworzenie zakresu dat w Pythonie
- 3. Wybierz dane z zakresu dat
- 4. Konwencja URL dla zakresu dat
- 5. Getting dniach między zakresu dat
- 6. ORACLE SQL Koniec zakresu dat
- 7. Filtruj według zakresu dat w SPARQL
- 8. Grupowanie według zakresu dat w T-SQL
- 9. Sprawdzanie daty z zakresu dat w Pythonie
- 10. Sprawdzanie konfliktów zakresu dat w MySQL
- 11. Selektor zakresu dat jest podobny do selektora zakresu dat Google Analytics?
- 12. Zapytanie MySQL do grupy według zakresu dat?
- 13. Sprawdzanie, czy data pasuje do zakresu dat
- 14. Wybieranie zakresu dat MySQL z datownikiem
- 15. Jak zmienić format daty selektora zakresu dat?
- 16. Java Joda Time - Implementowanie iteratora zakresu dat
- 17. Filtruj wpisy w pliku dziennika na podstawie zakresu dat
- 18. Zapytanie według daty i zakresu dat w Mongo
- 19. Filtrowanie według niestandardowego zakresu dat w administratorze Django
- 20. Wyszukiwanie zakresu dat lub pola zerowego/brak w Solr
- 21. Grupa według zakresu dat w tygodniach/miesiącach przedziale
- 22. Szyny - próba zapytania z zakresu dat ... wszystko od dzisiaj
- 23. Jak znacznik zakresu dat za pomocą znacznika czasu HTML5?
- 24. Wybór zakresu dat jak wywołać zdarzenie po wprowadzeniu daty
- 25. Jak wstawić 1000 losowych dat z podanego zakresu?
- 26. Zapytanie zakresu dat MDX z brakującą datą graniczną
- 27. Zaktualizuj wybrane daty wyboru zakresu dat na Twitterze Bootstrap
- 28. Crystal Reports trzeba zgrupować według pochodnego zakresu dat
- 29. Nodejs: Kineticjs w nodejs
- 30. Reakcja prostokątna i powtórzenie ng
I druga chwila nad datą-utils – film42
Dzięki za wskazówki! – nwaltham
w momencie 2.10 m.add (1, 'dni') jako przyrostowa część pętli for. – avances123