NEWS
Prüfen des aktuellen Datum auf Bereich
-
Hallo, wie kann ich denn am einfachsten Prüfen, ob das aktuelle Datum zwischen zwei Bereichen liegt?
Ich möchte dabei kein wirkliches Datum mit Jahr zum Prüfen angeben, sondern lediglich so etwas bspw.:
dateIsBetween(10.3.,15.11);
oder:
dateIsBetween(16.11.,9.3);
also nur Startdatum mit tag und Monat und das gleiche für das Enddatum.
Edit:
Also hoffe es ist verständlich, was ich erreichen möchte. -
@ben1983 Nutz halte eine Bibliothek. Ein Nachfolger der moments-Bibliothek ist dayjs
const dayjs = require('dayjs'); var isBetween = require('dayjs/plugin/isBetween'); dayjs.extend(isBetween); var customParseFormat = require('dayjs/plugin/customParseFormat'); dayjs.extend(customParseFormat); console.log(dayjs().isBetween(dayjs('10.3.','D.M.'), dayjs('5.11.','D.M.'), 'day', '[]'));
Man kann natürlich auch das Rad neu erfinden.
-
@ben1983 sagte: dateIsBetween(10.3.,15.11);
Wenn man erst den Monat und danach den Tag angibt (zweistellig), kann man einen Stringvergleich machen.
const today = formatDate(new Date(), 'MM.DD'); const dateIsBetwenn = today >= '03.10' && today <= '11.15')
-
@paul53 sagte in Prüfen des aktuellen Datum auf Bereich:
const today = formatDate(new Date(), 'MM.DD'); const dateIsBetwenn = today >= '03.10' && today <= '11.15')
OK, das klingt gut und logisch, aber man muss noch abfragen rein bringen,
denn der start kann ja auch am 11.11. sein und das ende am 01.01. -
@paul53 sagte in Prüfen des aktuellen Datum auf Bereich:
const today = formatDate(new Date(), 'MM.DD');
SO ist es in allen Varianten abgefngen..
Danke
function dateIsBetween(startday, startmonth, endday, endmonth){ const today = formatDate(new Date(), 'MM.DD'); const startdate = formatDate(new Date(new Date().getFullYear(),startmonth - 1, startday), 'MM.DD'); const enddate = formatDate(new Date(new Date().getFullYear(),endmonth - 1, endday), 'MM.DD'); // Wenn das Enddatum >= dem Start ist, so sind sie aus dem gleichen Jahr if(enddate >= startdate){ return (today >= startdate && today <= enddate); } // An sonsten, sind es unterschiedliche Jahre else{ return (today >= startdate && today >= enddate || today <= startdate && today <= enddate); } }
Edit:
Ich überlege gerade, ob ich nicht doch einfach eine Eingabe des Start und Enddatums in der Vis mache.
Da müsste man allerdings wieder das Jahr angeben und bspw. wenn das enddatum überschritten wird, um ein jahr addieren.... dann würde es sich selbst "incrementieren" und nicht am Jahr hängen. -
@mickym so wie es aussieht macht die datejs nichts anderes,
als den von @paul53 beschriebenen Stringvergleich.
Oder berücksichtigt es noch die Jahresübergänge?Ich habe mich jetzt entschieder, das Date Widged aus der Vis zu nutzen.
Daraus ergibt sich bspw.
"2023-11-05"
Diesen String übergebe ich meiner Funktion und vergleiche so sie Daten.
wird das enddatum überschritten, so werden ein Jahr vor datiert. klappt super.// Funktion zum Prüfen, ob der aktuelle Moment zwischen zwei Daten ist function nowIsBetween(startdate, enddate, useCompleteDeate){ const today = new Date(); const start = new Date(startdate); const end = new Date(enddate); if(useCompleteDeate){ start.setHours(0); start.setMinutes(0); start.setSeconds(0); end.setHours(23); end.setMinutes(59); end.setSeconds(59); } return (today >= start && today <= end); }