etc./StackOverFlow

JavaScript로 두 날짜 비교

청렴결백한 만능 재주꾼 2021. 11. 26. 06:55
반응형

질문자 :Alex


누군가 JavaScript를 사용하여 과거보다 크거나 작거나 없는 두 날짜 의 값을 비교하는 방법을 제안할 수 있습니까? 값은 텍스트 상자에서 가져옵니다.



Date 개체 는 원하는 대로 수행합니다. 각 날짜에 대해 하나씩 구성한 다음 > , < , <= 또는 >= 사용하여 비교합니다.

== , != , ===!== 연산자를 사용하려면 다음과 같이 date.getTime()

 var d1 = new Date(); var d2 = new Date(d1); var same = d1.getTime() === d2.getTime(); var notSame = d1.getTime() !== d2.getTime();

날짜 개체와 직접 같음을 확인하는 것만으로 명확하게 작동하지 않습니다.

 var d1 = new Date(); var d2 = new Date(d1); console.log(d1 == d2); // prints false (wrong!) console.log(d1 === d2); // prints false (wrong!) console.log(d1 != d2); // prints true (wrong!) console.log(d1 !== d2); // prints true (wrong!) console.log(d1.getTime() === d2.getTime()); // prints true (correct)

그러나 입력 유효성 검사 지옥에 빠지지 않도록 텍스트 상자보다 드롭다운 또는 유사한 제한된 형식의 날짜 입력을 사용하는 것이 좋습니다.


흥미로운 date.getTime() 문서의 경우 :

지정된 날짜의 숫자 값을 1970년 1월 1일 00:00:00 UTC 이후의 밀리초 수로 반환합니다. (음수 값은 이전 시간에 대해 반환됩니다.)


moonshadow

자바 스크립트에서 날짜를 비교하는 가장 쉬운 방법은 먼저 날짜 개체로 변환한 다음 이러한 날짜 개체를 비교하는 것입니다.

아래에서 세 가지 기능을 가진 개체를 찾을 수 있습니다.

  • dates.compare(a,b)

    숫자를 반환합니다.

    • -1 < b인 경우
    • a = b인 경우 0
    • a > b인 경우 1
    • 또는 b가 잘못된 날짜인 경우 NaN
  • dates.inRange (d, 시작, 끝)

    부울 또는 NaN을 반환합니다.

    • d 가 시작 (포함) 사이에 있으면 true
    • 거짓의 경우 (D)가 개시 전후 단부이다.
    • 하나 이상의 날짜가 잘못된 경우 NaN입니다.
  • 날짜 변환

    다른 함수에서 입력을 날짜 개체로 변환하는 데 사용합니다. 입력은

    • a date -object : 입력이 있는 그대로 반환됩니다.
    • 배열 : [년,월,일]로 해석됩니다. 참고 월은 0-11입니다.
    • 숫자 : 1970년 1월 1일 이후의 밀리초 수로 해석됨(타임스탬프)
    • 문자열 : "YYYY/MM/DD", "MM/DD/YYYY", "2009년 1월 31일" 등과 같은 다양한 형식이 지원됩니다.
    • 객체 : 연도, 월, 날짜 속성을 가진 객체로 해석됩니다. 참고 월은 0-11입니다.

.

 // Source: http://stackoverflow.com/questions/497790 var dates = { convert:function(d) { // Converts the date in d to a date-object. The input can be: // a date object: returned without modification // an array : Interpreted as [year,month,day]. NOTE: month is 0-11. // a number : Interpreted as number of milliseconds // since 1 Jan 1970 (a timestamp) // a string : Any format supported by the javascript engine, like // "YYYY/MM/DD", "MM/DD/YYYY", "Jan 31 2009" etc. // an object : Interpreted as an object with year, month and date // attributes. **NOTE** month is 0-11. return ( d.constructor === Date ? d : d.constructor === Array ? new Date(d[0],d[1],d[2]) : d.constructor === Number ? new Date(d) : d.constructor === String ? new Date(d) : typeof d === "object" ? new Date(d.year,d.month,d.date) : NaN ); }, compare:function(a,b) { // Compare two dates (could be of any type supported by the convert // function above) and returns: // -1 : if a < b // 0 : if a = b // 1 : if a > b // NaN : if a or b is an illegal date // NOTE: The code inside isFinite does an assignment (=). return ( isFinite(a=this.convert(a).valueOf()) && isFinite(b=this.convert(b).valueOf()) ? (a>b)-(a<b) : NaN ); }, inRange:function(d,start,end) { // Checks if date in d is between dates in start and end. // Returns a boolean or NaN: // true : if d is between start and end (inclusive) // false : if d is before start or after end // NaN : if one or more of the dates is illegal. // NOTE: The code inside isFinite does an assignment (=). return ( isFinite(d=this.convert(d).valueOf()) && isFinite(start=this.convert(start).valueOf()) && isFinite(end=this.convert(end).valueOf()) ? start <= d && d <= end : NaN ); } }

some

평소와 같이 <> 비교 = 와 관련된 모든 것은 + 접두사를 사용해야 합니다. 이렇게:

 const x = new Date('2013-05-23'); const y = new Date('2013-05-23'); // less than, greater than is fine: console.log('x < y', x < y); // false console.log('x > y', x > y); // false console.log('x === y', x === y); // false, oops! // anything involving '=' should use the '+' prefix // it will then compare the dates' millisecond values console.log('+x <= +y', +x <= +y); // true console.log('+x >= +y', +x >= +y); // true console.log('+x === +y', +x === +y); // true


Daniel Lidström

관계 연산자 < <= > >= 를 사용하여 JavaScript 날짜를 비교할 수 있습니다.

 var d1 = new Date(2013, 0, 1); var d2 = new Date(2013, 0, 2); d1 < d2; // true d1 <= d2; // true d1 > d2; // false d1 >= d2; // false

그러나 등호 연산자 == != === !== 다음과 같은 이유로 날짜(값)를 비교하는 데 사용할 수 없습니다.

  • 엄격하거나 추상적인 비교에서 두 개의 개별 객체는 결코 같지 않습니다.
  • 개체를 비교하는 식은 피연산자가 동일한 개체를 참조하는 경우에만 참입니다.

다음 방법 중 하나를 사용하여 날짜 값이 동일한지 비교할 수 있습니다.

 var d1 = new Date(2013, 0, 1); var d2 = new Date(2013, 0, 1); /* * note: d1 == d2 returns false as described above */ d1.getTime() == d2.getTime(); // true d1.valueOf() == d2.valueOf(); // true Number(d1) == Number(d2); // true +d1 == +d2; // true

Date.getTime()Date.valueOf() 모두 1970년 1월 1일 00:00 UTC 이후의 밀리초 수를 반환합니다. Number 함수와 단항 + 연산자는 모두 무대 뒤에서 valueOf() 메서드를 호출합니다.


Salman A

지금까지 가장 쉬운 방법은 다른 날짜에서 한 날짜를 빼고 결과를 비교하는 것입니다.

 var oDateOne = new Date(); var oDateTwo = new Date(); alert(oDateOne - oDateTwo === 0); alert(oDateOne - oDateTwo < 0); alert(oDateOne - oDateTwo > 0);


Programming Guy

JavaScript에서 날짜 를 비교하는 것은 매우 쉽습니다... JavaScript에는 날짜에 대한 비교 시스템 이 내장되어 있어 비교가 매우 쉽습니다...

2개의 날짜 값을 비교하려면 다음 단계를 따르십시오. 예를 들어 각각 String 날짜 값이 있는 2개의 입력이 있고 이를 비교할 수 있습니다...

1. 입력에서 얻은 2개의 문자열 값이 있고 비교하려는 경우 다음과 같습니다.

 var date1 = '01/12/2018'; var date2 = '12/12/2018';

2. Date Object new Date() 사용하여 날짜로 변환하기만 하면 설명의 편의를 위해 다시 할당하지만 원하는 대로 수행할 수 있습니다.

 date1 = new Date(date1); date2 = new Date(date2);

3. > < >= <= 사용하여 간단히 비교합니다.

 date1 > date2; //false date1 < date2; //true date1 >= date2; //false date1 <= date2; //true

자바 스크립트에서 날짜 비교


Alireza

요일만 비교(시간 구성 요소 무시):

 Date.prototype.sameDay = function(d) { return this.getFullYear() === d.getFullYear() && this.getDate() === d.getDate() && this.getMonth() === d.getMonth(); }

용법:

 if(date1.sameDay(date2)) { // highlight day on calendar or something else clever }

더 이상 내장 객체 prototype 을 수정하는 것을 권장하지 않습니다. 대신 다음을 시도하십시오.

 function isSameDay(d1, d2) { return d1.getFullYear() === d2.getFullYear() && d1.getDate() === d2.getDate() && d1.getMonth() === d2.getMonth(); } console.log(isSameDay(new Date('Jan 15 2021 02:39:53 GMT-0800'), new Date('Jan 15 2021 23:39:53 GMT-0800'))); console.log(isSameDay(new Date('Jan 15 2021 10:39:53 GMT-0800'), new Date('Jan 16 2021 10:39:53 GMT-0800')));

NB 해당 시간대 의 연도/월/일이 반환됩니다. 두 날짜가 다른 시간대에서 같은 날인지 확인하려면 시간대 인식 라이브러리를 사용하는 것이 좋습니다.

 > (new Date('Jan 15 2021 01:39:53 Z')).getDate() // Jan 15 in UTC 14 // Returns "14" because I'm in GMT-08

mpen

어떤 형식?

Javascript Date 객체 를 구성하는 경우 밀리초 차이를 얻기 위해 빼기만 하면 됩니다(편집: 또는 그냥 비교).

 js>t1 = new Date() Thu Jan 29 2009 14:19:28 GMT-0500 (Eastern Standard Time) js>t2 = new Date() Thu Jan 29 2009 14:19:31 GMT-0500 (Eastern Standard Time) js>t2-t1 2672 js>t3 = new Date('2009 Jan 1') Thu Jan 01 2009 00:00:00 GMT-0500 (Eastern Standard Time) js>t1-t3 2470768442 js>t1>t3 true

Jason S

간단한 방법은,

 var first = '2012-11-21'; var second = '2012-11-03'; if (new Date(first) > new Date(second) { ..... }

MICHAEL PRABHU

참고 - 날짜 부분만 비교:

자바 스크립트에서 두 날짜를 비교할 때. 시간, 분, 초도 고려해야 합니다. 따라서 날짜만 비교해야 하는 경우 접근 방식은 다음과 같습니다.

 var date1= new Date("01/01/2014").setHours(0,0,0,0); var date2= new Date("01/01/2014").setHours(0,0,0,0);

이제: if date1.valueOf()> date2.valueOf() 가 매력처럼 작동할 것입니다.


Sanjeev Singh

짧은 답변

다음은 dateTime > to dateTime 데모가 실행 중인 경우 {boolean}을 반환하는 함수입니다.

 var from = '08/19/2013 00:00' var to = '08/12/2013 00:00 ' function isFromBiggerThanTo(dtmfrom, dtmto){ return new Date(dtmfrom).getTime() >= new Date(dtmto).getTime() ; } console.log(isFromBiggerThanTo(from, to)); //true

설명

jsFiddle

 var date_one = '2013-07-29 01:50:00', date_two = '2013-07-29 02:50:00'; //getTime() returns the number of milliseconds since 01.01.1970. var timeStamp_date_one = new Date(date_one).getTime() ; //1375077000000 console.log(typeof timeStamp_date_one);//number var timeStamp_date_two = new Date(date_two).getTime() ;//1375080600000 console.log(typeof timeStamp_date_two);//number

이제 숫자 유형으로 두 날짜/시간을 모두 가지고 있기 때문에 모든 비교 작업과 비교할 수 있습니다.

( >, < ,= ,!= ,== ,!== ,>= AND <=)

그 다음에

C# 사용자 지정 날짜 및 시간 형식 문자열에 익숙하다면 이 라이브러리는 동일한 작업을 수행하고 날짜 시간 문자열을 전달하든 유닉스 형식으로 전달하든 날짜 및 시간 dtmFRM을 형식화하는 데 도움이 됩니다.

용법

 var myDateTime = new dtmFRM(); alert(myDateTime.ToString(1375077000000, "MM/dd/yyyy hh:mm:ss ampm")); //07/29/2013 01:50:00 AM alert(myDateTime.ToString(1375077000000,"the year is yyyy and the day is dddd")); //this year is 2013 and the day is Monday alert(myDateTime.ToString('1/21/2014', "this month is MMMM and the day is dd")); //this month is january and the day is 21

데모

js 파일에 있는 이러한 형식 중 하나를 전달하기만 하면 됩니다.


Mina Gabriel

이 코드를 사용하면

 var firstValue = "2012-05-12".split('-'); var secondValue = "2014-07-12".split('-'); var firstDate=new Date(); firstDate.setFullYear(firstValue[0],(firstValue[1] - 1 ),firstValue[2]); var secondDate=new Date(); secondDate.setFullYear(secondValue[0],(secondValue[1] - 1 ),secondValue[2]); if (firstDate > secondDate) { alert("First Date is greater than Second Date"); } else { alert("Second Date is greater than First Date"); }

또한이 링크를 확인하십시오 http://www.w3schools.com/js/js_obj_date.asp


stay_hungry

var date = new Date(); // will give you todays date. // following calls, will let you set new dates. setDate() setFullYear() setHours() setMilliseconds() setMinutes() setMonth() setSeconds() setTime() var yesterday = new Date(); yesterday.setDate(...date info here); if(date>yesterday) // will compare dates

user35288

function datesEqual(a, b) { return (!(a>b || b>a)) }

sky

시간대를 조심하십시오

자바 스크립트 날짜에는 시간대 개념 이 없습니다. "로컬" 시간대의 문자열과의 번역을 위한 편리한 기능이 있는 시간(시대 이후의 똑딱이)입니다. 여기 모든 사람들이 하는 것처럼 날짜 개체를 사용하여 날짜로 작업하려는 경우 날짜가 해당 날짜 시작 시 UTC 자정을 나타내기를 원합니다. 이것은 날짜를 만든 계절이나 시간대에 관계없이 날짜로 작업할 수 있도록 하는 일반적이고 필요한 규칙입니다. 따라서 특히 자정 UTC Date 객체를 생성할 때 시간대 개념을 관리하는 데 매우 주의를 기울여야 합니다.

대부분의 경우 날짜가 사용자의 시간대를 반영하기를 원할 것입니다. 오늘이 생일이면 클릭하세요 . 뉴질랜드와 미국의 사용자는 동시에 클릭하고 다른 날짜를 얻습니다. 그럴땐 이렇게 하세요...

 // create a date (utc midnight) reflecting the value of myDate and the environment's timezone offset. new Date(Date.UTC(myDate.getFullYear(),myDate.getMonth(), myDate.getDate()));

때로는 국제적 비교 가능성이 현지 정확성보다 우선합니다. 그럴땐 이렇게 하세요...

 // the date in London of a moment in time. Device timezone is ignored. new Date(Date.UTC(myDate.getUTCYear(), myDate.getyUTCMonth(), myDate.getUTCDate()));

이제 다른 답변에서 제안하는 대로 날짜 개체를 직접 비교할 수 있습니다.

생성할 때 시간대를 관리하는 데 주의를 기울인 후에는 문자열 표현으로 다시 변환할 때도 시간대를 제외해야 합니다. 안심하고 사용하실 수 있도록...

  • toISOString()
  • getUTCxxx()
  • getTime() //returns a number with no time or timezone.
  • .toLocaleDateString("fr",{timezone:"UTC"}) // whatever locale you want, but ALWAYS UTC.

그리고 다른 모든 것을 완전히 피하십시오. 특히...

  • getYear() , getMonth() , getDate()

bbsimonbb

Moment.js를 통해

Jsfiddle: http://jsfiddle.net/guhokemk/1/

 function compare(dateTimeA, dateTimeB) { var momentA = moment(dateTimeA,"DD/MM/YYYY"); var momentB = moment(dateTimeB,"DD/MM/YYYY"); if (momentA > momentB) return 1; else if (momentA < momentB) return -1; else return 0; } alert(compare("11/07/2015", "10/07/2015"));

경우 방법은 1을 반환 dateTimeA 보다 큰 dateTimeB

경우 방법은 0을 반환 dateTimeA 동일 dateTimeB

dateTimeA dateTimeB 보다 작은 경우 메서드는 -1을 반환합니다.


Razan Paul

많은 기존 옵션에 또 다른 가능성을 추가하기 위해 다음을 시도할 수 있습니다.

 if (date1.valueOf()==date2.valueOf()) .....

...저에게 효과가 있는 것 같습니다. 물론 두 날짜가 모두 정의되지 않았는지 확인해야 합니다...

 if ((date1?date1.valueOf():0)==(date2?date2.valueOf():0) .....

이렇게 하면 둘 다 정의되지 않은 경우에도 긍정적인 비교가 이루어지도록 할 수 있습니다.

 if ((date1?date1.valueOf():0)==(date2?date2.valueOf():-1) .....

... 동일하지 않은 것을 선호하는 경우.


Paul

두 날짜를 빼면 밀리초 단위로 차이가 나고 0 이 나오면 같은 날짜입니다.

 function areSameDate(d1, d2){ return d1 - d2 === 0 }

Yukulélé

날짜 개체 A와 B가 있고 EPOC 시간 값을 가져온 다음 빼서 밀리초 단위의 차이를 구한다고 가정합니다.

 var diff = +A - +B;

그게 다야.


foobar

두 날짜를 비교하기 위해 https://code.google.com/archive/p/datejs/downloads 에서 찾을 수 있는 date.js JavaScript 라이브러리를 사용할 수 있습니다.

Date.compare( Date date1, Date date2 ) 메서드를 사용하면 다음 결과를 의미 하는 숫자가 반환됩니다.

-1 = date1이 date2보다 작습니다.

0 = 값이 같습니다.

1 = date1이 date2보다 큽니다.


Salahin Rocky

Javascript의 자유 텍스트에서 날짜를 생성하려면 날짜를 Date() 객체로 구문 분석해야 합니다.

자유 텍스트를 사용하여 새 날짜로 변환하려고 시도하는 Date.parse()를 사용할 수 있지만 페이지를 제어할 수 있는 경우 대신 HTML 선택 상자를 사용하거나 YUI 캘린더 제어 또는 jQuery UI와 같은 날짜 선택기를 사용하는 것이 좋습니다. 날짜 선택기 .

다른 사람들이 지적한 대로 날짜가 있으면 간단한 산술을 사용하여 날짜를 빼고 숫자(초)를 하루의 초 수(60*60*)로 나누어 날짜 수로 다시 변환할 수 있습니다. 24 = 86400).


sh1mmer

다음이 날짜 형식인 경우 이 코드를 사용할 수 있습니다.

 var first = '2012-11-21'; var second = '2012-11-03'; if(parseInt(first.replace(/-/g,""),10) > parseInt(second.replace(/-/g,""),10)){ //... }

20121121 숫자가 20121103 보다 큰지 확인합니다.


totten

성능

오늘 2020.02.27 MacOs High Sierra v10.13.6의 Chrome v80.0, Safari v13.0.5 및 Firefox 73.0.1에서 선택한 솔루션의 테스트를 수행합니다.

결론

  • 솔루션 d1==d2 (D) 및 d1===d2 (E)는 모든 브라우저에서 가장 빠릅니다.
  • 솔루션 getTime (A)이 valueOf (B)보다 빠름(둘 다 중간 빠름)
  • 솔루션 F, L, N은 모든 브라우저에서 가장 느립니다.

여기에 이미지 설명 입력

세부

아래에는 성능 테스트에 사용된 스니펫 솔루션이 나와 있습니다. 여기 에서 컴퓨터에서 테스트를 수행할 수 있습니다.

 function A(d1,d2) { return d1.getTime() == d2.getTime(); } function B(d1,d2) { return d1.valueOf() == d2.valueOf(); } function C(d1,d2) { return Number(d1) == Number(d2); } function D(d1,d2) { return d1 == d2; } function E(d1,d2) { return d1 === d2; } function F(d1,d2) { return (!(d1>d2 || d2>d1)); } function G(d1,d2) { return d1*1 == d2*1; } function H(d1,d2) { return +d1 == +d2; } function I(d1,d2) { return !(+d1 - +d2); } function J(d1,d2) { return !(d1 - d2); } function K(d1,d2) { return d1 - d2 == 0; } function L(d1,d2) { return !((d1>d2)-(d1<d2)); } function M(d1,d2) { return d1.getFullYear() === d2.getFullYear() && d1.getDate() === d2.getDate() && d1.getMonth() === d2.getMonth(); } function N(d1,d2) { return (isFinite(d1.valueOf()) && isFinite(d2.valueOf()) ? !((d1>d2)-(d1<d2)) : false ); } // TEST let past= new Date('2002-12-24'); // past let now= new Date('2020-02-26'); // now console.log('Code d1>d2 d1<d2 d1=d2') var log = (l,f) => console.log(`${l} ${f(now,past)} ${f(past,now)} ${f(now,now)}`); log('A',A); log('B',B); log('C',C); log('D',D); log('E',E); log('G',G); log('H',H); log('I',I); log('J',J); log('K',K); log('L',L); log('M',M); log('N',N);
 p {color: red}
 <p>This snippet only presents tested solutions (it not perform tests itself)</p>

크롬에 대한 결과

여기에 이미지 설명 입력


Kamil Kiełczewski

var date_today=new Date(); var formated_date = formatDate(date_today);//Calling formatDate Function var input_date="2015/04/22 11:12 AM"; var currentDateTime = new Date(Date.parse(formated_date)); var inputDateTime = new Date(Date.parse(input_date)); if (inputDateTime <= currentDateTime){ //Do something... } function formatDate(date) { var hours = date.getHours(); var minutes = date.getMinutes(); var ampm = hours >= 12 ? 'PM' : 'AM'; hours = hours % 12; hours = hours ? hours : 12; // the hour '0' should be '12' hours = hours < 10 ? '0'+hours : hours ; minutes = minutes < 10 ? '0'+minutes : minutes; var strTime = hours+":"+minutes+ ' ' + ampm; return date.getFullYear()+ "/" + ((date.getMonth()+1) < 10 ? "0"+(date.getMonth()+1) : (date.getMonth()+1) ) + "/" + (date.getDate() < 10 ? "0"+date.getDate() : date.getDate()) + " " + strTime; }

vickisys

"some"이 게시한 코드의 개선된 버전

 /* Compare the current date against another date. * * @param b {Date} the other date * @returns -1 : if this < b * 0 : if this === b * 1 : if this > b * NaN : if a or b is an illegal date */ Date.prototype.compare = function(b) { if (b.constructor !== Date) { throw "invalid_date"; } return (isFinite(this.valueOf()) && isFinite(b.valueOf()) ? (this>b)-(this<b) : NaN ); };

용법:

 var a = new Date(2011, 1-1, 1); var b = new Date(2011, 1-1, 1); var c = new Date(2011, 1-1, 31); var d = new Date(2011, 1-1, 31); assertEquals( 0, a.compare(b)); assertEquals( 0, b.compare(a)); assertEquals(-1, a.compare(c)); assertEquals( 1, c.compare(a));

Community Wiki

나는 일반적으로 Datestimestamps(Number) 로 저장합니다.

비교할 필요가 있을 때 단순히 그 타임스탬프를 비교하거나

이를 Date Object로 변환한 다음 필요한 경우 > <

변수가 동일한 날짜 개체의 참조가 아니면 == 또는 ===가 제대로 작동하지 않습니다.

해당 Date 객체를 먼저 timestamp(number)로 변환한 다음 동일한지 비교합니다.


타임스탬프 날짜

 var timestamp_1970 = new Date(0).getTime(); // 1970-01-01 00:00:00 var timestamp = new Date().getTime(); // Current Timestamp

현재까지의 타임스탬프

 var timestamp = 0; // 1970-01-01 00:00:00 var DateObject = new Date(timestamp);

jwchang

Dates 객체를 비교하기 전에 Date.setMilliseconds(0)과 같이 두 밀리초를 모두 Date.setMilliseconds(0); .

Date 객체가 자바스크립트에서 동적으로 생성되는 일부 경우에 Date.getTime() 을 계속 인쇄하면 밀리초가 변경되어 두 날짜가 동일하지 않은 것을 볼 수 있습니다.


Júlio Paulillo

 from_date ='10-07-2012'; to_date = '05-05-2012'; var fromdate = from_date.split('-'); from_date = new Date(); from_date.setFullYear(fromdate[2],fromdate[1]-1,fromdate[0]); var todate = to_date.split('-'); to_date = new Date(); to_date.setFullYear(todate[2],todate[1]-1,todate[0]); if (from_date > to_date ) { alert("Invalid Date Range!\nStart Date cannot be after End Date!") return false; }

이 코드를 사용하여 자바스크립트를 사용하여 날짜를 비교합니다.

D.Jeeva 감사합니다


Jeeva

var curDate=new Date(); var startDate=document.forms[0].m_strStartDate; var endDate=document.forms[0].m_strEndDate; var startDateVal=startDate.value.split('-'); var endDateVal=endDate.value.split('-'); var firstDate=new Date(); firstDate.setFullYear(startDateVal[2], (startDateVal[1] - 1), startDateVal[0]); var secondDate=new Date(); secondDate.setFullYear(endDateVal[2], (endDateVal[1] - 1), endDateVal[0]); if(firstDate > curDate) { alert("Start date cannot be greater than current date!"); return false; } if (firstDate > secondDate) { alert("Start date cannot be greater!"); return false; }

user1931504

다음은 내 프로젝트 중 하나에서 수행한 작업입니다.

 function CompareDate(tform){ var startDate = new Date(document.getElementById("START_DATE").value.substring(0,10)); var endDate = new Date(document.getElementById("END_DATE").value.substring(0,10)); if(tform.START_DATE.value!=""){ var estStartDate = tform.START_DATE.value; //format for Oracle tform.START_DATE.value = estStartDate + " 00:00:00"; } if(tform.END_DATE.value!=""){ var estEndDate = tform.END_DATE.value; //format for Oracle tform.END_DATE.value = estEndDate + " 00:00:00"; } if(endDate <= startDate){ alert("End date cannot be smaller than or equal to Start date, please review you selection."); tform.START_DATE.value = document.getElementById("START_DATE").value.substring(0,10); tform.END_DATE.value = document.getElementById("END_DATE").value.substring(0,10); return false; } }

onsubmit 양식에서 이것을 호출합니다. 도움이 되었기를 바랍니다.


Brijesh

출처 : http:www.stackoverflow.com/questions/492994/compare-two-dates-with-javascript

반응형