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