2010-11-27 72 views
19

我正在尝试这个,但不工作......为什么?如何知道日期是今天?

<html> 
<body> 
    <script type="text/javascript"> 

     var today=new Date(); //today is Nov 28, 2010 
     today.setHours(0); 
     today.setMinutes(0); 
     today.setSeconds(0); 
     document.write(today+" "); 

     var today2 = new Date("November 28, 2010"); 
     document.write(today2 + " "); 
     if (today == today2) { document.write("=="); 
     if (!(today > today2) && !(today < today2)) {document.write("== ");} 
     if (today > today2) { document.write("> ");} 
     if (today >= today2){ document.write(">= ");} 
     if (today < today2) { document.write("< ");} 
     if (today <= today2){ document.write("<= ");} 

    </script> 
</body> 
</html> 

,我总是得到这样的:

Sun Nov 28 2010 00:00:00 GMT+0900 (JST) Sun Nov 28 2010 00:00:00 GMT+0900 (JST) > >= 

是不是这两个日期是一样的吗?因此,我应该得到==打印,但没有发生......;(

感谢您对您的帮助提前

+0

您是否要求计算日期差异的方法或确定给定日期是否为今天的方法?有关第一个问题,请参阅:http://stackoverflow.com/questions/41948/how-do-i-get-the-difference-between-two-dates-in-javascript。第二,检查我的答案。 – KooiInc 2010-11-27 19:30:01

+0

谢谢大家的回答...这是一个js实验;) – nacho4d 2010-11-28 04:49:50

回答

57

他们不会匹配,因为你在比较两个不同的Date对象实例

你需要得到可以比较的一些共同的价值。例如.toDateString()

today.toDateString() == today2.toDateString(); // true 

如果你只是比较两个独立的Date对象,即使他们有确切相同的日期值,他们仍然不同。

例如:

today == new Date(today); // false 

它们是相同的日期/时间值,但不是相同的对象,所以结果是false

16
function today(td) { 
    var d = new Date(); 
    return td.getDate() == d.getDate() && td.getMonth() == d.getMonth() && td.getFullYear() == d.getFullYear(); 
}