检查日期是不是在过去 Javascript
Posted
技术标签:
【中文标题】检查日期是不是在过去 Javascript【英文标题】:Check if date is in the past Javascript检查日期是否在过去 Javascript 【发布时间】:2012-01-08 11:13:49 【问题描述】:所有, 我正在为日期选择器使用 jQuery UI。尽管用户输入的日期是过去的,但我正在尝试使用 javascript 检查。这是我的表单代码:
<input type="text" id="datepicker" name="event_date" class="datepicker">
那么我将如何使用 Javascript 进行检查以确保它不是过去的日期?谢谢
【问题讨论】:
【参考方案1】:$('#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">
【讨论】:
单线:if ($('#datepicker').datepicker('getDate') < new Date) ...
。使用 new
关键字调用函数时可以省略括号。
您可以跳过now
变量。通过使用(selectedDate.getTime() < Date.now())
@MiguelTrias:当然。这让读者更清楚一点。
如果你只看日期(没有时间),那么你应该像这样var now = ( new Date() ).setHours(0,0,0,0);
@IvanYurchenko:.val()
返回一个字符串,即<input>
中的内容。 .datepicker('getDate')
返回一个 Date
对象。【参考方案2】:
var datep = $('#datepicker').val();
if(Date.parse(datep)-Date.parse(new Date())<0)
// do something
【讨论】:
【参考方案3】:为了使答案更易于重用,而不仅仅是日期选择器更改功能,您可以创建一个原型来为您处理。
// 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());
【讨论】:
【参考方案4】:只需将日期转换为毫秒并减去
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');
如果差异是负,那么给定日期是未来
let diff = new Date().getTime() - givenDate2.getTime();
if (diff < 0)
console.log('Given Date givenDate2 is in Future');
【讨论】:
你真的需要 new Date($.now()) 吗?和 new Date() 不一样吗? @AlexandruEftimie,是的,你是对的,两者都是一样的。不需要做 new Date($.now())【参考方案5】: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;
【讨论】:
var Startdate 从何而来?以上是关于检查日期是不是在过去 Javascript的主要内容,如果未能解决你的问题,请参考以下文章