2013-10-24 55 views
0

基本上,我需要計算(非常長壽)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版本。

任何想法可能會導致此問題?

+2

可以肯定的是,'m'是代碼中'moment'的別名?還是括號是錯誤的? –

+0

你是對的! 'm'只是'moment'的一個別名,但是錯誤來自於下面一行,我把創建的對象移交給一個函數,該函數試圖在內部調用'toUTCString'。因此它失敗了。感謝您指點我正確的方向:-)! –

+0

因爲你已經使用了momentjs,爲什麼你不使用時刻打印出utc字符串呢? (),add('years',99).utc()。format();' – Lifecube

回答

3

你應該只能夠做到這一步:

moment().add('years', 99).toISOString() 

但我認爲主要的問題是在評論dystroy鑑定。

0

你試過類似的東西:

expirationDate = new Date(moment().add('years', 99));

這樣,你會得到一個約會的時間,我試過MomentJs的.toDate(),但它並沒有滿足我的需求。

+0

OP爲什麼要「試試這個」?請添加一個解釋,你做了什麼,爲什麼你這樣做,不僅是爲了OP,而是爲了將來的訪問者SO。 –

+0

在日期對象中包裝線條非常好。謝謝。不過,我覺得這個時刻對於許多不同的場景來說是一個非常有用的庫。 – usefulBee

相關問題