날짜가 과거 자바스크립트인지 확인
모두, 저는 날짜 선택기에 jQuery UI를 사용하고 있습니다.사용자가 입력한 날짜가 지난 날짜임에도 javascript로 확인하려고 합니다.양식 코드는 다음과 같습니다.
<input type="text" id="datepicker" name="event_date" class="datepicker">
그럼 자바스크립트로 어떻게 확인하면 과거의 날짜가 아닌지 확인할 수 있을까요?감사해요.
$('#datepicker').datepicker().change(evt => {
var selectedDate = $('#datepicker').datepicker('getDate');
var now = new Date();
now.setHours(0,0,0,0);
if (selectedDate < now) {
console.log("Selected date is in the past");
} else {
console.log("Selected date is NOT in the past");
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>
<input type="text" id="datepicker" name="event_date" class="datepicker">
var datep = $('#datepicker').val();
if(Date.parse(datep)-Date.parse(new Date())<0)
{
// do something
}
날짜 선택기 변경 기능이 아닌 다른 용도로 더 유용하게 사용할 수 있도록 프로토타입을 만들어 이를 처리할 수 있습니다.
// safety check to see if the prototype name is already defined
Function.prototype.method = function (name, func) {
if (!this.prototype[name]) {
this.prototype[name] = func;
return this;
}
};
Date.method('inPast', function () {
return this < new Date($.now());// the $.now() requires jQuery
});
// including this prototype as using in example
Date.method('addDays', function (days) {
var date = new Date(this);
date.setDate(date.getDate() + (days));
return date;
});
안전 점검이 마음에 들지 않으면 기존 방식으로 프로토타입을 정의할 수 있습니다.
Date.prototype.inPast = function(){
return this < new Date($.now());// the $.now() requires jQuery
}
사용 예시
var dt = new Date($.now());
var yesterday = dt.addDays(-1);
var tomorrow = dt.addDays(1);
console.log('Yesterday: ' + yesterday.inPast());
console.log('Tomorrow: ' + tomorrow.inPast());
날짜를 밀리초 단위로 변환하고 빼기만 하면 됩니다.
let givenDate1 = new Date("10/21/2001") // Past Date
let givenDate2 = new Date("10/21/2050") // future Date
diff가 양수이면 주어진 날짜는 PAST입니다.
let diff = new Date().getTime() - givenDate1.getTime();
if (diff > 0) {
console.log('Given Date givenDate1 is in Past');
}
diff가 음수이면 주어진 날짜는 미래입니다.
let diff = new Date().getTime() - givenDate2.getTime();
if (diff < 0) {
console.log('Given Date givenDate2 is in Future');
}
date-fns 라이브러리에서 과거(날짜) 메서드를 사용할 수 있습니다.
import { isPast } from 'date-fns'
console.log(new Date('1991-06-17'));
// returns true.
console.log(new Date('2191-06-17'));
// returns false.
방법에 대한 자세한 정보: https://date-fns.org/v2.29.3/docs/isPast
function isPrevDate() {
alert("startDate is " + Startdate);
if(Startdate.length != 0 && Startdate !='') {
var start_date = Startdate.split('-');
alert("Input date: "+ start_date);
start_date=start_date[1]+"/"+start_date[2]+"/"+start_date[0];
alert("start date arrray format " + start_date);
var a = new Date(start_date);
//alert("The date is a" +a);
var today = new Date();
var day = today.getDate();
var mon = today.getMonth()+1;
var year = today.getFullYear();
today = (mon+"/"+day+"/"+year);
//alert(today);
var today = new Date(today);
alert("Today: "+today.getTime());
alert("a : "+a.getTime());
if(today.getTime() > a.getTime() )
{
alert("Please select Start date in range");
return false;
} else {
return true;
}
}
}
언급URL : https://stackoverflow.com/questions/8305259/check-if-date-is-in-the-past-javascript
'programing' 카테고리의 다른 글
백엔드 권한으로 프런트엔드 액세스 (0) | 2023.09.19 |
---|---|
자바스크립트로 딥클론하는 방법 (0) | 2023.09.19 |
word press 403 오류 ( duplic레이터 설치) (0) | 2023.09.19 |
%ENV가 작동하지 않으며 공유 라이브러리를 사용할 수 없습니다. (0) | 2023.09.19 |
파워셸을 최신 개정판으로 업데이트 (0) | 2023.09.19 |