1

我正在使用库Date.js和 Date.parse() 方法

当我解析 Date.parse('30/07/2012') 我得到正确的日期 Mon Jul 30 2012 00:00:00 GMT+0200 (CEST) 但是当我试图解析 Date.parse( '01/08/2012')(日期 2 天后)我得到了 Sun Jan 08 2012 00:00:00 GMT+0100 (CET) 它正在转换日期和月份!

有谁知道这是为什么?

我相信这不是问题不是在 Date.js 而是在 JS 本身......

4

3 回答 3

3

我的猜测是 date.js 足够聪明,可以意识到这30不是一个有效的月份,所以它会自行切换为 dd/mm/yyyy 格式。

但是,默认格式是 mm/dd/yyyy,并且它确实识别01为有效月份(一月),因此它为您提供 1 月 8 日而不是 8 月 1 日。

要解决此问题,只需指定您正在使用的格式字符串:

Date.parse('30/07/2012', 'MM/dd/yyyy');

http://code.google.com/p/datejs/wiki/APIDocumentation

于 2012-07-30T13:13:02.310 回答
0

谢谢大家的提示。

实际的解决方案是使用Date.parseExact()并指定日期的输入。在这种情况下Date.parseExact('01/08/2012', "d/M/yyyy")

于 2012-07-30T14:48:45.980 回答
0

您的格式可能是错误的(“mm/dd/yyyy”)而不是(“dd/mm/yyyy”)。

当您使用 30 作为一个月时,库将其解析为一天,但在下一种情况下,没有任何借口,您将被解析为一个月而不是一天。

于 2012-07-30T13:13:18.923 回答