2014-02-27 39 views
1

我解析2个不同的日期字符串Moment.js 2个不同的日期字符串赋予相同的值

var d1 = '2014-02-01T00:00:00.000+0530' 

var d2 = '2014-02-23T00:00:00.000+0530' 

当我使用他们此刻

alert(moment(d1, 'YYYY-MM-dd"T"HH:mm:ss.fffffff"Z"').toDate()); 
alert(moment(d2, 'YYYY-MM-dd"T"HH:mm:ss.fffffff"Z"').toDate()); 

他们两个打印周六解析Feb 1 2014 xxxxx

它有什么问题?

这里是链接到小提琴我创建

jsfiddle

回答

1

我想你的瞬间格式化字符串是造成你的问题。如果我删除它,那么日期不会按照相同的方式打印。

http://jsfiddle.net/K5ub8/7/

编辑:具体问题是您正在使用dd的一天,而不是DDhttp://momentjs.com/docs/#/parsing/string-format/

这里是你的提琴固定: http://jsfiddle.net/K5ub8/9/

不过,我不是100%地肯定小数秒,我相信这是SSS而不是fffffff但如果你需要,以满足分数我会测试这个秒。

我应该提到,如果您将它转换回JavaScript日期对象,无论如何与toDate(),那么你不需要时刻格式化参数,因为日期将被格式化为JSON日期格式。

我会质疑为什么要生成一个格式化的日期,然后将其转换回JavaScript,通常的做法可能是接收JavaScript格式的日期,然后创建一个可用于执行的时刻对象计算和以不错的用户友好方式显示。

1

简单的回答:你的格式有点偏离。

http://jsfiddle.net/K5ub8/8/

调整格式后要'YYYY-MM-DDTHH:mm:ss.SSSZZ'而不是'YYYY-MM-dd"T"HH:mm:ss.fffffff"Z"'它的工作就好了。当你试图调试这样的问题时,最好将格式保存在一个单独的变量中,这样你就可以使用你试图解析出来的相同格式来显示你得到的内容。如果你这样做,你会注意到'YYYY-MM-dd"T"HH:mm:ss.fffffff"Z"'由于它打印出2014-01-Fr"T"11:32:03.fffffff"-08:00"而被搞砸了。这显然不太正确。

相关问题