Ich würde gerne eine Reihe von Kalenderdaten durchlaufen, jede Iteration ist +1 Tag. Ich würde etwas verwenden, das um JodaTime in Java gebaut wurde - gibt es etwas Ähnliches in NodeJS?Iterate durch eine Reihe von Daten in NodeJS
Antwort
Sie moment.js in einer node.js Anwendung verwenden können.
npm install moment
Dann können Sie ganz einfach tun:
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 ... das sieht viel wie der Code, den Sie bereits in Ihrer eigenen Antwort geschrieben. Moment.js ist eine beliebte Bibliothek mit vielen Funktionen, aber ich frage mich, welche besser funktioniert? Vielleicht können Sie testen und lassen Sie uns wissen. :)
Aber keiner von beiden macht so viel wie JodaTime. Dafür benötigen Sie eine Bibliothek, die die TZDB in JavaScript implementiert. Ich liste some of those here auf.
Achten Sie auch auf problems with JavaScript dates im Allgemeinen. Dies betrifft auch NodeJS.
Verwenden Sie den https://github.com/JerrySievert/node-date-utils Rahmen, dann können Sie leicht wie folgt durchlaufen:
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"));
}
Ich würde eine Änderung der früheren Antwort von Matt vorschlagen. Sein Code wird eine Mutation auf dem Objekt a
verursachen. try this ...
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'));
}
Guter Fang verwenden! Das habe ich vermisst. –
So viel wie es viele Dienstprogramme für diese sind, könnten sie umständlich in eine sinnvolle Schleife integrieren gegen Daten zu überprüfen.
Dies sollte den Trick tun. Es könnte übertrieben sein, aber Sie könnten dies sehr leicht auf der Basis von Argumentation machen.
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. Iterate auf eine Reihe von iterierbaren
- 2. Nodejs Iterate durch Array und schreibe in Datei
- 3. Iterate durch eine ControlCollection von einem CreateUserWizardStep
- 4. Iterate durch iOS-Core-Daten-Beziehung
- 5. Iterate durch eine Liste in Python
- 6. Wie erhalten Sie einen Mehrwert durch eine Reihe von Daten?
- 7. eine Reihe von Daten Sortierung
- 8. Iterate durch Registry-Unterordner
- 9. Iterate durch ein Struct?
- 10. Iterate durch Liste R
- 11. Iterate durch StringProperty
- 12. Iterate durch Json Array
- 13. Iterate bedingt durch Array
- 14. Eine Reihe von Daten mit einer Reihe von Tagen filtern
- 15. Iterate Enum durch Argument
- 16. Iterate durch Unterverzeichnisse in bash
- 17. Symfony Iterate durch Objekte
- 18. Iterate durch Repeater
- 19. Iterate durch NSData Bytes
- 20. Iterate durch verschachtelte hashmap
- 21. Iterate paarweise durch eine rubin Array
- 22. Looping durch eine Reihe von Objekten
- 23. Iterate durch Registrierungseinträge
- 24. Wie iterate durch int?
- 25. Python-Schleife durch eine Reihe von Variablen
- 26. Iterate durch Form und Druckwerte nur mit Daten in Form
- 27. Iterate durch eine Liste der Liste in Python
- 28. Iterate durch einen Namespace
- 29. Iterate durch Pandas Reihen effizient
- 30. Iterate durch eine dynamische Anzahl von for-Schleifen (Python)
I zweiter Moment über Datum-utils – film42
Danke für die Zeiger! – nwaltham
im Moment 2,10 m.add (1, 'Tage') als Inkrementteil der for-Schleife. – avances123