Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript简单日期验证_Javascript_Date - Fatal编程技术网

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