2014-07-25 87 views
0

我正在使用Node(Express.js)更新MySQL數據庫與日期現在,它工作正常,但我的代碼有點重複。節點MySQL格式的JavaScript時間戳

var newYears = new Date(); 
var newMonths = new Date(); 
var newDays = new Date(); 
var newHours = new Date(); 
var newMinutes = new Date(); 
var newSeconds = new Date(); 
var yearNow = newYears.getFullYear(); 
var monthNow = newMonths.getMonth(); 
var dayNow = newDays.getDate(); 
var hourNow = newHours.getHours(); 
var minuteNow = newMinutes.getMinutes(); 
var secondNow = newSeconds.getSeconds(); 
var timeNow = yearNow + '-' + (monthNow + 1) + '-' + dayNow + ' ' + hourNow + ':' + minuteNow + ':' + secondNow; 

只有幾個字符可以達到相同的結果?

回答

1

你可以切出一些開銷,這樣的:

var basedate = new Date(); 
    var yearNow = basedate.getFullYear() 
    var monthNow = basedate.getMonth(); 
    var dayNow = basedate.getDate(); 
    var hourNow = basedate.getHours(); 
    var minuteNow = basedate.getMinutes(); 
    var secondNow = basedate.getSeconds(); 
    var timeNow = yearNow + '-' + (monthNow + 1) + '-' + dayNow + ' ' + hourNow + ':' + minuteNow + ':' + secondNow; 

Alteratively別人可能會成立一個數組分割Dateobject的組成部分,以節省一些處理器週期,但除非你發現自己迫切需要以減少腳本的執行時間,不用擔心。

一個好的經驗法則是,如果你不能量化加速,你不應該嘗試優化它。如果沒壞......

在另一方面,你可能會喜歡http://perlgolf.sourceforge.net/

+0

如果您希望正確格式化日期(YYYY-MM-DD HH:MM:SS而不是YYYY-MD H:M:S,就像現在一樣),您可以這樣做:'var timeNow = yearNow +' - '+ String('00'+(monthNow + 1))。slice(-2)+' - '+ String('00'+ dayNow).slice(-2)+''+ String('00'+ (-2)+':'+ String('00'+ minuteNow).slice(-2)+':'+ String('00'+ secondNow).slice(-2)' – Niklas

1

moment.js

var now = moment().add(1,'month').format("YYYY-MM-DD h:mm:ss A"); 

看看這裏是jsfiddle。如果你想使用nodeJS,你可以使用var moment = require('moment');。其餘的代碼將是相同的。