2014-04-01 107 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发送一个日期,但它的格式可能会有所不同?那么最好的方法是什么?谢谢 –