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_Equality - Fatal编程技术网

JavaScript日期比较不';不相等

JavaScript日期比较不';不相等,javascript,date,equality,Javascript,Date,Equality,我试着搜索有类似问题的人,但什么也没找到 我在JavaScript中有两个日期,都设置为相同的值。。。相等性测试在==、但>=和dt上失败) 文件写入('开始日期>dt'); 如果(起始日期>=dt) document.write('开始日期>=dt'); if(起始日期=起始日期) 文件写入('dt>=开始日期'); 如果(dt

我试着搜索有类似问题的人,但什么也没找到

我在JavaScript中有两个日期,都设置为相同的值。。。相等性测试在==、但>=和dt上失败) 文件写入('开始日期>dt
'); 如果(起始日期>=dt) document.write('开始日期>=dt
'); if(起始日期'); 如果(开始日期开始日期) 文件。写入('dt>startDate
'); 如果(dt>=起始日期) 文件写入('dt>=开始日期
'); 如果(dt<起始日期) 文件写入('dt<开始日期
'); if(dt)类型的比较,从来没有一个完全相等,所以我无法联系到我为什么做错了

多亏了你们两位,还有其他人,他们给出了相似的答案。

我想如果你们这样做的话

var startDate = (new Date( 2011, 7, 30, 0, 0, 0, 0 )).getTime();
var dt = (new Date( 2011, 7, 30, 0, 0, 0, 0 )).getTime();
在脚本的顶部,你会发现它是有效的

getTime()
方法以整数形式返回日期,您在那里做的是比较对象,而不是特定的值

编辑固定上述代码

var startDate=新日期(2011,7,30,0,0,0);
var startDate = new Date( 2011, 7, 30, 0, 0, 0, 0 );

var dt = new Date( 2011, 7, 30, 0, 0, 0, 0 );

if( startDate.getTime() == dt.getTime() )
    console.log('They Equal<br />');
var dt=新日期(2011年7月30日0月0日0月0日); if(startDate.getTime()==dt.getTime()) log(“它们等于
”);
使用
=
比较两个日期对象时,将通过
valueOf
对它们进行比较,这与日期的
getTime
相同

但是当您使用
==
时,它们是相同类型的两个不同对象,因此返回false

添加了一些示例:

> new Date(2011, 7, 30, 0, 0, 0, 0) == new Date( 2011, 7, 30, 0, 0, 0, 0 )
false
> new Date(2011, 7, 30, 0, 0, 0, 0).getTime() == new Date( 2011, 7, 30, 0, 0, 0, 0).getTime()
true
> new Date(2011, 7, 30, 0, 0, 0, 0).valueOf() == new Date( 2011, 7, 30, 0, 0, 0, 0).valueOf()
true
> new Date(2011, 7, 30, 0, 0, 0, 0).valueOf() == new Date( 2011, 7, 30, 0, 0, 0, 0).getTime()
true

这是Javascript中许多不合逻辑的部分之一。您可以通过使用
.getTime()
将日期转换为数字来解决此问题,该数字将返回从该日期到1970年1月1日00:00经过的毫秒数

if (a.getTime() === b.getTime()) ...
对象本身上的
=
操作符将始终返回false,因为这两个对象确实是不同的可变javascript对象

PS:不要在Javascript中使用
=
运算符。永远不要。它的作用是将术语“疯狂”提升到一个全新的水平。说真的。问题是,应用所有类型的类型转换都毫无意义,例如,你最终会遇到
“1”==1
x==false&&(x?1:2)==1
或甚至
a==b&&b==c&&a!=c
为真(例如,使用
x=[]
或使用
a=[1],b=1,c=[[1]]
)。永远不要使用
=
。这是“FUBAR”。完全停止。


<Script>
function checkval()
{
var strfromdate=document.frmadmin.txtfromdate.value;
strfromdate=strfromdate.split("/");
//alert(strfromdate[2]+" "+strfromdate[0]+" "+strfromdate[1]);

var strtodate=document.frmadmin.txttodate.value;
strtodate=strtodate.split("/");

var fromDate = (new Date( strfromdate[2], strfromdate[0], strfromdate[1], 0, 0, 0, 0 )).getTime();
var toDate = (new Date( strtodate[2], strtodate[0], strtodate[1], 0, 0, 0, 0 )).getTime();
//alert(fromDate+" "+toDate);



    if(toDate<fromDate)
    {
        alert("To date should be greater than from date.");
        document.frmadmin.txttodate.focus();
        return false;
    }


    return true;
}
</Script>
函数checkval() { var strfromdate=document.frmadmin.txtfromdate.value; strfromdate=strfromdate.split(“/”); //警报(strfromdate[2]+“”+strfromdate[0]+“”+strfromdate[1]); var strtodate=document.frmadmin.txttodate.value; strtodate=strtodate.split(“/”); var fromDate=(新日期(strfromdate[2],strfromdate[0],strfromdate[1],0,0,0)).getTime(); var toDate=(新日期(strtodate[2],strtodate[0],strtodate[1],0,0,0,0)).getTime(); //警报(fromDate+“”+toDate);
如果(toDate@Shef只有大约50秒,我会给你一个+1来补偿你的麻烦;-)我基本上同意后记,但它应该有一些更有意义的东西来支持,比如:
<Script>
function checkval()
{
var strfromdate=document.frmadmin.txtfromdate.value;
strfromdate=strfromdate.split("/");
//alert(strfromdate[2]+" "+strfromdate[0]+" "+strfromdate[1]);

var strtodate=document.frmadmin.txttodate.value;
strtodate=strtodate.split("/");

var fromDate = (new Date( strfromdate[2], strfromdate[0], strfromdate[1], 0, 0, 0, 0 )).getTime();
var toDate = (new Date( strtodate[2], strtodate[0], strtodate[1], 0, 0, 0, 0 )).getTime();
//alert(fromDate+" "+toDate);



    if(toDate<fromDate)
    {
        alert("To date should be greater than from date.");
        document.frmadmin.txttodate.focus();
        return false;
    }


    return true;
}
</Script>