2014-04-01 91 views
1

用戶從一個jQuery日期選擇器的日期,它具有以下格式:試圖格式化至今,一直得到無效的日期

DD.MM.YYYY 

當用戶提交表單,我想把日期輸入轉換爲UTC使用時刻。但是,無論我如何處理輸入,我都會收到Invalid Date錯誤。

E.g.輸入

30.03.2014 

我嘗試格式:

console.log(moment(input).format('MM/DD/YY')); <-- prints Invalid Date 

我嘗試

console.log(moment(input).utc().toDate()); <-- prints invalid date 

似乎一刻也不能解析輸入,就可以解析MM.DD.YY格式,但輸入必須具有DD.MM.YYYY格式。

任何想法最新怎麼了?


使用

moment(input, 'DD.MM.YYYY') 

給我:

{ from: '01.03.2014', to: '30.03.2014' } 
{ from: Sat Mar 01 2014 00:00:00 GMT+0100 (CET), 
    to: Tue Apr 01 2014 11:00:00 GMT+0200 (CEST) } 

回答

11

考慮使用片刻的暗示支持:

moment(input, 'DD.MM.YYYY') 

小提琴證明該方法可以在這裏找到:

http://jsfiddle.net/x4Xm3/

此刻承擔本地時間投入,所以如果你是時區以外的工作,你可能希望將時區附加到您的輸入。請參閱http://momentjs.com/docs處的文檔 - 特別是parseZone()和「String + Format」部分。

在服務器端(節點)的情況下,由於服務器的時區,您可能會得到奇怪的結果。

+0

謝謝你,還有一些東西,看我的編輯。 30.03轉換爲01.04 –

+0

我注意到,只要我在日期中添加一天或一小時,momentjs就會將它轉換爲CEST,而不是使用CET。 –

+0

@彼得,如果你不知道提示支持的格式呢?假設一個API發送一個日期,但它的格式可能會有所不同?那麼最好的方法是什麼?謝謝 –