2013-01-11 57 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

這就像一個魅力。也有道理。謝謝 –