Nice programing

한 날짜가 두 날짜 사이에 있는지 확인 (JavaScript)

nicepro 2020. 12. 3. 19:44
반응형

한 날짜가 두 날짜 사이에 있는지 확인 (JavaScript)


날짜 ( dd/mm/yyyy형식 의 문자열 )가 동일한 형식을 가진 다른 두 날짜 사이 에 있는지 확인해야 합니다.dd/mm/yyyy

나는 이것을 시도했지만 작동하지 않습니다.

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");

디버거를 사용하고 확인했으며 tofrom변수에 isNaN값이 있습니다. 당신이 나를 도울 수?


Date.parse형식을 지원 mm/dd/yyyy하지 dd/mm/yyyy. 후자의 경우 moment.js와 같은 라이브러리를 사용하거나 아래와 같이 수행하십시오.

var 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)

날짜를 직접 비교하는 대신 날짜의 getTime () 값을 비교하십시오. getTime () 함수는 1970 년 1 월 1 일 이후의 밀리 초 수를 정수로 반환합니다. 하나의 정수가 다른 두 정수 사이에 속하는지 확인하는 것은 간단해야합니다.

같은 것

if((check.getTime() <= to.getTime() && check.getTime() >= from.getTime()))      alert("date contained");

아래 내용을 시도해보십시오. 그것은 당신을 도울 것입니다 ...

바이올린 : http://jsfiddle.net/RYh7U/146/

스크립트 :

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;
}

50 표가있는 답변은 몇 달 동안 만 날짜를 확인하지 않습니다. 정답이 아닙니다. 아래 코드가 작동합니다.

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);

이것은 다른 답변에 게시 된 코드이며 날짜를 변경했으며 작동하지 않는다는 것을 알았습니다.

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);

이 시도:

HTML

<div id="eventCheck"></div>

자바 스크립트

// ----------------------------------------------------//
// 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
}

바이올린 : https://jsfiddle.net/zm75cq2a/


다음은 typescript로 작성된 Date Prototype 메서드입니다.

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();
};

첫 번째 대답 인 @Diode와 똑같은 일을했지만 날짜 범위로 조건을 만들었습니다.이 예제가 누군가에게 유용하기를 바랍니다.

예 (날짜 배열을 사용한 예제와 동일한 코드)

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);
        }
})


주어진 날짜가 두 날짜 사이인지 아닌지 확인하는 사용자 지정 기능을 만들었습니다.

var getvalidDate = function(d){ return new Date(d) }

function validateDateBetweenTwoDates(fromDate,toDate,givenDate){
    return getvalidDate(givenDate) <= getvalidDate(toDate) && getvalidDate(givenDate) >= getvalidDate(fromDate);
}

이 시도

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');
        }

깡깡이

참고 URL : https://stackoverflow.com/questions/16080378/check-if-one-date-is-between-two-dates-javascript

반응형