尝试格式化日期,始终获得无效日期

Upv*_*ote 1 javascript node.js momentjs

用户从jquery datepicker中选择日期,它具有以下格式:

DD.MM.YYYY
Run Code Online (Sandbox Code Playgroud)

当用户提交表单时,我想使用时刻将日期输入转换为UTC.无论我对输入做什么,我都会收到Invalid Date错误.

例如输入

30.03.2014
Run Code Online (Sandbox Code Playgroud)

我尝试格式化:

console.log(moment(input).format('MM/DD/YY')); <-- prints Invalid Date
Run Code Online (Sandbox Code Playgroud)

我试着

console.log(moment(input).utc().toDate()); <-- prints invalid date
Run Code Online (Sandbox Code Playgroud)

看来那一刻无法解析输入,它可以解析MM.DD.YY格式,但输入必须有DD.MM.YYYY格式.

任何想法都错了吗?


运用

moment(input, 'DD.MM.YYYY')
Run Code Online (Sandbox Code Playgroud)

给我:

{ 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) }
Run Code Online (Sandbox Code Playgroud)

Pet*_*ter 12

考虑使用时刻的暗示支持:

moment(input, 'DD.MM.YYYY')
Run Code Online (Sandbox Code Playgroud)

这里有一个展示这种方法的小提琴:

http://jsfiddle.net/x4Xm3/

Moment将假设当地时间输入,因此如果您在该时区之外工作,您可能需要将时区附加到您的输入.请参阅http://momentjs.com/docs上的文档- 特别是parseZone()和"String + Format"部分.

在服务器端(节点)的情况下,由于服务器的时区,您可能会得到奇怪的结果.