基本上,我需要計算(非常長壽)cookie的到期日期,所以我想要現在+ 99年。由於這種使用庫如Moment.js比本地JavaScript時是比較容易的方式,我做的:Moment.js toDate並不總是返回一個Date實例
var expirationDate = moment().add('years', 99);
但我需要一個JavaScript Date
對象,並調用其toUTCString
函數來獲取正確格式化字符串爲cookie。因此我在做:
var expirationDate = m().add('years', 99).toDate().toUTCString();
現在,發生了一些非常奇怪的事情。當我在Node.js shell中運行這行時,一切都很好。但是如果我從腳本中運行它,它會失敗。該錯誤消息是
TypeError: Object Mon, 24 Oct 2112 07:34:34 GMT has no method 'toUTCString'
這是正確的事情通過返回toDate
沒有的Date
實例,但只是一個普通的舊對象。奇怪的是,當我在Node.js REPL中嘗試完全相同的東西時,toDate
返回一個Date
的實例。
我在同一臺機器上使用Node.js 0.8.25同時運行REPL和腳本。 Moment.js是2.3.1版本。
任何想法可能會導致此問題?
可以肯定的是,'m'是代碼中'moment'的別名?還是括號是錯誤的? –
你是對的! 'm'只是'moment'的一個別名,但是錯誤來自於下面一行,我把創建的對象移交給一個函數,該函數試圖在內部調用'toUTCString'。因此它失敗了。感謝您指點我正確的方向:-)! –
因爲你已經使用了momentjs,爲什麼你不使用時刻打印出utc字符串呢? (),add('years',99).utc()。format();' – Lifecube