JavaScript简单日期验证
我尝试验证用户输入的日期。一定是今天或以后。我怎么能做到 为什么下面代码中的条件为JavaScript简单日期验证,javascript,date,Javascript,Date,我尝试验证用户输入的日期。一定是今天或以后。我怎么能做到 为什么下面代码中的条件为false var today = new Date(); var idate = new Date('02/09/2014'); if(today > idate) { alert('your date is big'); } 如果我设置了today那么它就是今天的日期,并且我传入了idate那么它也是今天的日期,那么我如何比较日期 这里是JSFIDLE:默认数据解析器在2014年2月9日
false
var today = new Date();
var idate = new Date('02/09/2014');
if(today > idate) {
alert('your date is big');
}
如果我设置了today
那么它就是今天的日期,并且我传入了idate
那么它也是今天的日期,那么我如何比较日期
这里是JSFIDLE:默认数据解析器在2014年2月9日读取您的
idate
,因此今天的大于idate
如果将idate设置为2014年4月9日,代码将按预期运行
var today = new Date();
var idate = new Date('09/04/2014');
console.log(today);
>>>Tue Sep 02 2014 11:48:52 GMT+0100 (BST)
console.log(idate);
>>>Thu Sep 04 2014 00:00:00 GMT+0100 (BST)
你有两个问题
日期区域性和时间部分
首先,new Date()
选择当前日期,其中包含当前浏览器的区域性加上时间部分
new Date('09/04/2014')
没有添加时间部分,因此它从00:00:00
开始,区域性也取决于浏览器。因此,这可能意味着第九或第四的SEPT取决于文化。 有一些事情要考虑。
从字符串
表示创建新的日期
对象时,请以YYYY-MM-DD
格式执行。这将避免区域设置问题
比较两个日期时,如果可以忽略时间,请将两者设置为完全相同的时间。这里看起来是这样的
最后,使用Date.parse()
确保您的对象是有效的日期,并且可以进行比较
var today = new Date();
var idate = new Date('2014-09-02');
// The date entered by the user will have the same
// time from today's date object.
idate.setHours(today.getHours());
idate.setMinutes(today.getMinutes());
idate.setSeconds(today.getSeconds());
idate.setMilliseconds(today.getMilliseconds());
// Parsing the date objects.
today = Date.parse(today);
idate = Date.parse(idate);
// Comparisons.
if (idate == today) {
alert('Date is today.');
}
else if (idate < today) {
alert('Date in the past.');
}
else if (idate > today) {
alert('Date in the future.');
}
var today=新日期();
var idate=新日期('2014-09-02');
//用户输入的日期将具有相同的
//从今天的日期对象开始的时间。
idate.setHours(today.getHours());
idate.setMinutes(今日.getMinutes());
idate.setSeconds(今天的.getSeconds());
setmillizes(today.getmillizes());
//解析日期对象。
今天=Date.parse(今天);
idate=Date.parse(idate);
//比较。
如果(idate==今天){
警报(“日期为今天”);
}
否则如果(日期<今天){
警报(“过去的日期”);
}
否则如果(idate>今天){
警报(“未来日期”);
}
另外,当您面临难以解决的日期/时间计算、操作等问题时,可以使用Moment.js
库。它非常有用:记住,newdate()
包含时间部分。
如果您不在乎时间,请按如下方式创建“今天”日期:
var now = new Date();
var today = new Date(now.getFullYear(), now.getMonth(), now.getDay());
var idate = new Date('09/02/2014');
另一件事是JS日期格式是“mm/dd/yyyy”。因此,请像这样更改您的“ID”:
var now = new Date();
var today = new Date(now.getFullYear(), now.getMonth(), now.getDay());
var idate = new Date('09/02/2014');
您可以使用<和>
来比较日期。但是=
将始终返回false,以检查两个日期是否相等使用:如果(today.getTime()==idate.getTime())
请参阅更新的fiddle:从字符串创建新的日期对象时,使用格式为:YYYY-MM-DD
的日期以避免区域设置信息出现问题。(即:新日期('2014-09-02');
)。