2013-01-11 56 views
1

我试图使用JavaScript对象文字来格式化时间与MySql日期时间值进行比较。陈旧的JavaScript对象文字日期

继承人对象。

var dateTime = { 
    d: new Date(), 
    pad: function(number) { 
     return (number < 10 ? '0' : '') + number; 
    }, 
    now: function() { 
     return this.d.getFullYear()+'-'+this.pad(this.d.getMonth()+1)+'-'+this.pad(this.d.getDate())+' '+this.pad(this.d.getHours())+':'+this.pad(this.d.getMinutes())+':'+this.pad(this.d.getSeconds()); 
    }    
} 

让我们说我即将调用此对象onClick获取日期并将其显示在一个警告框中。我一直得到相同的字符串返回。

实施例:

alert(dateTime.now()); 

返回:

Same date every time. 

为什么?

+0

您是否期望'd'每毫秒自动更新一次? – Esailija

+0

'alert(dateTime());'是无效的,你的意思是'alert(dateTime.now());'?当对象被定义时,它总是和'.d'一样被初始化一次。 –

+0

对不起,我更新了Alex的问题。感谢您指出错字。 –

回答

3

更改您的代码是这样的:

var dateTime = { 
    pad: function(number) { 
     return (number < 10 ? '0' : '') + number; 
    }, 
    now: function() { 
     var d = new Date(); 
     return d.getFullYear()+'-'+this.pad(d.getMonth()+1)+'-'+this.pad(d.getDate())+' '+this.pad(d.getHours())+':'+this.pad(d.getMinutes())+':'+this.pad(d.getSeconds()); 
    }    
} 

当你做d: new Date(),你正在服用含有时new Date()执行,像快照的时刻的日期/时间的对象。该对象不显示动态时间。正因为如此,你总是有相同的时间显示。实际上,那是dateTime对象创建的时间。

+0

这就像一个魅力。也有道理。谢谢 –