Ich muss überprüfen, ob a date
- eine Zeichenfolge im dd/mm/yyyy
Format - zwischen zwei anderen Daten mit demselben Format liegtdd/mm/yyyy
Ich habe es versucht, aber es funktioniert nicht:
var dateFrom = "02/05/2013";
var dateTo = "02/09/2013";
var dateCheck = "02/07/2013";
var from = Date.parse(dateFrom);
var to = Date.parse(dateTo);
var check = Date.parse(dateCheck );
if((check <= to && check >= from))
alert("date contained");
Ich habe den Debugger verwendet und überprüft, ob die Variablen to
und from
einen isNaN
Wert haben. Kannst du mir helfen?
javascript
date
Daniel Garcia Sanchez
quelle
quelle
Antworten:
Date.parse
unterstützt das Formatmm/dd/yyyy
nichtdd/mm/yyyy
. Verwenden Sie für letztere entweder eine Bibliothek wie moment.js oder führen Sie die folgenden Schritte ausvar dateFrom = "02/05/2013"; var dateTo = "02/09/2013"; var dateCheck = "02/07/2013"; var d1 = dateFrom.split("/"); var d2 = dateTo.split("/"); var c = dateCheck.split("/"); var from = new Date(d1[2], parseInt(d1[1])-1, d1[0]); // -1 because months are from 0 to 11 var to = new Date(d2[2], parseInt(d2[1])-1, d2[0]); var check = new Date(c[2], parseInt(c[1])-1, c[0]); console.log(check > from && check < to)
quelle
check >= from && check < to
Vergleichen Sie die getTime () -Werte des Datums, anstatt die Daten direkt zu vergleichen. Die Funktion getTime () gibt die Anzahl der Millisekunden seit dem 1. Januar 1970 als Ganzzahl zurück. Dies sollte trivial sein, um festzustellen, ob eine Ganzzahl zwischen zwei anderen Ganzzahlen liegt.
Etwas wie
if((check.getTime() <= to.getTime() && check.getTime() >= from.getTime())) alert("date contained");
quelle
NaN
hat weder eineGetTime
noch einegetTime
Methode?let compareDate = new Date('checkDate').setHours(0, 0, 0, 0); let startDate = new Date('startDate').setHours(0, 0, 0, 0); let endDate = new Date('endDate').setHours(0, 0, 0, 0); console.log(compareDate <= endDate && compareDate >= startDate);
Hoffe, es wird anderen helfen :)Versuchen Sie, was unten ist. Es wird dir helfen...
Geige: http://jsfiddle.net/RYh7U/146/
Skript :
if(dateCheck("02/05/2013","02/09/2013","02/07/2013")) alert("Availed"); else alert("Not Availed"); function dateCheck(from,to,check) { var fDate,lDate,cDate; fDate = Date.parse(from); lDate = Date.parse(to); cDate = Date.parse(check); if((cDate <= lDate && cDate >= fDate)) { return true; } return false; }
quelle
NAN
dann diese Funktion istreturn False
AlsoDate you check Or Pass
ist dasNot Availed
oderIn Valid
und das ist der HÖLLEN Unterschied zwischen meinem Code und ihmNaN
an erster Stelle (die es nicht in allen Browsern ist)now
fallen unter7:00am
zu9:00pm
Die Antwort mit 50 Stimmen prüft das Datum nicht nur monatelang. Diese Antwort ist nicht richtig. Der folgende Code funktioniert.
var dateFrom = "01/08/2017"; var dateTo = "01/10/2017"; var dateCheck = "05/09/2017"; var d1 = dateFrom.split("/"); var d2 = dateTo.split("/"); var c = dateCheck.split("/"); var from = new Date(d1); // -1 because months are from 0 to 11 var to = new Date(d2); var check = new Date(c); alert(check > from && check < to);
Dies ist der Code, der in einer anderen Antwort veröffentlicht wurde, und ich habe die Daten geändert. Auf diese Weise habe ich festgestellt, dass er nicht funktioniert
var dateFrom = "02/05/2013"; var dateTo = "02/09/2013"; var dateCheck = "07/07/2013"; var d1 = dateFrom.split("/"); var d2 = dateTo.split("/"); var c = dateCheck.split("/"); var from = new Date(d1[2], parseInt(d1[1])-1, d1[0]); // -1 because months are from 0 to 11 var to = new Date(d2[2], parseInt(d2[1])-1, d2[0]); var check = new Date(c[2], parseInt(c[1])-1, c[0]); alert(check > from && check < to);
quelle
Ich habe eine Anpassungsfunktion erstellt, um zu überprüfen, ob das angegebene Datum zwischen zwei Daten liegt oder nicht.
var getvalidDate = function(d){ return new Date(d) } function validateDateBetweenTwoDates(fromDate,toDate,givenDate){ return getvalidDate(givenDate) <= getvalidDate(toDate) && getvalidDate(givenDate) >= getvalidDate(fromDate); }
quelle
Vereinfachte Vorgehensweise basierend auf der akzeptierten Antwort.
In meinem Fall musste ich überprüfen, ob das aktuelle Datum (Heute) den Bereich von zwei anderen Datumsangaben festlegt, sodass newDate () anstelle von fest codierten Werten verwendet wird. Sie können jedoch feststellen, wie Sie fest codierte Daten verwenden können.
var currentDate = new Date().toJSON().slice(0,10); var from = new Date('2020/01/01'); var to = new Date('2020/01/31'); var check = new Date(currentDate); console.log(check > from && check < to);
quelle
Versuche dies:
HTML
<div id="eventCheck"></div>
JAVASCRIPT
// ----------------------------------------------------// // Todays date var today = new Date(); var dd = today.getDate(); var mm = today.getMonth()+1; //January is 0! var yyyy = today.getFullYear(); // Add Zero if it number is between 0-9 if(dd<10) { dd = '0'+dd; } if(mm<10) { mm = '0'+mm; } var today = yyyy + '' + mm + '' + dd ; // ----------------------------------------------------// // Day of event var endDay = 15; // day 15 var endMonth = 01; // month 01 (January) var endYear = 2017; // year 2017 // Add Zero if it number is between 0-9 if(endDay<10) { endDay = '0'+endDay; } if(endMonth<10) { endMonth = '0'+endMonth; } // eventDay - date of the event var eventDay = endYear + '/' + endMonth + '/' + endDay; // ----------------------------------------------------// // ----------------------------------------------------// // check if eventDay has been or not if ( eventDay < today ) { document.getElementById('eventCheck').innerHTML += 'Date has passed (event is over)'; // true } else { document.getElementById('eventCheck').innerHTML += 'Date has not passed (upcoming event)'; // false }
Geige: https://jsfiddle.net/zm75cq2a/
quelle
Hier ist eine in Typoskript geschriebene Date Prototype-Methode:
Date.prototype.isBetween = isBetween; interface Date { isBetween: typeof isBetween } function isBetween(minDate: Date, maxDate: Date): boolean { if (!this.getTime) throw new Error('isBetween() was called on a non Date object'); return !minDate ? true : this.getTime() >= minDate.getTime() && !maxDate ? true : this.getTime() <= maxDate.getTime(); };
quelle
Ich habe das Gleiche getan wie @Diode, die erste Antwort, aber ich habe die Bedingung mit einer Reihe von Daten erfüllt. Ich hoffe, dass dieses Beispiel für jemanden nützlich sein wird
zB (der gleiche Code zum Beispiel mit Array von Daten)
var dateFrom = "02/06/2013"; var dateTo = "02/09/2013"; var d1 = dateFrom.split("/"); var d2 = dateTo.split("/"); var from = new Date(d1[2], parseInt(d1[1])-1, d1[0]); // -1 because months are from 0 to 11 var to = new Date(d2[2], parseInt(d2[1])-1, d2[0]); var dates= ["02/06/2013", "02/07/2013", "02/08/2013", "02/09/2013", "02/07/2013", "02/10/2013", "02/011/2013"]; dates.forEach(element => { let parts = element.split("/"); let date= new Date(parts[2], parseInt(parts[1]) - 1, parts[0]); if (date >= from && date < to) { console.log('dates in range', date); } })
quelle
Angenommen, Ihr Datum kommt zum Beispiel so und Sie müssen momentjs für Funktionen für das Vorabdatum installieren.
let cmpDate = Thu Aug 27 2020 00:00:00 GMT+0530 (India Standard Time) let format = "MM/DD/YYYY"; let startDate: any = moment().format(format); let endDate: any = moment().add(30, "days").format(format); let compareDate: any = moment(cmpDate).format(format); var startDate1 = startDate.split("/"); var startDate2 = endDate.split("/"); var compareDate1 = compareDate.split("/"); var fromDate = new Date(startDate1[2], parseInt(startDate1[1]) - 1, startDate1[0]); var toDate = new Date(startDate2[2], parseInt(startDate2[1]) - 1, startDate2[0]); var checkDate = new Date(compareDate1[2], parseInt(compareDate1[1]) - 1, compareDate1[0]); if (checkDate > fromDate && checkDate < toDate) { ... condition works between current date to next 30 days }
quelle
Versuche dies
var gdate='01-05-2014'; date =Date.parse(gdate.split('-')[1]+'-'+gdate.split('-')[0]+'-'+gdate.split('-')[2]); if(parseInt(date) < parseInt(Date.now())) { alert('small'); }else{ alert('big'); }
Geige
quelle