почему Date.parse ('2012-01-01') и Date.parse ('01.01.2012') возвращают разные значения? - PullRequest
4 голосов
/ 01 января 2012

Проверено в браузерах (Firefox и Chrome) и на разных платформах (OSX и Linux):

> Date.parse('2012-01-01')
1325376000000
> Date.parse('1/1/2012')
1325394000000

Актуально: https://github.com/portablemind/compass_agile_enterprise/wiki/Javascript-Date.parse-bug%3F

Ответы [ 3 ]

3 голосов
/ 01 января 2012

Формат 2012-01-01 интерпретируется как соответствующий стандарту ISO 8601, и подразумевается часовой пояс Z (+00, всемирное координированное время). Формат 1/1/2012, если он принят (зависит от реализации), принимается за местное время.

Чтобы получить более согласованные результаты, используйте такую ​​библиотеку, как Globalize.js.

1 голос
/ 01 января 2012

Если вы добавите Z в конце, это будет означать, что вы всегда имеете в виду UTC.

> Date.parse('2012-01-01')
1325376000000
> Date.parse('1/1/2012')
1325394000000
> Date.parse('1/1/2012 Z')
1325376000000
0 голосов
/ 01 января 2012

Я написал код, как показано ниже:

    var a = Date.parse('2012-01-01');
    var b = Date.parse('2012-01-01');
    var c = Date.parse('1/1/2012');

    alert( a + ' - ' + b + ' - ' + c );

И результат,

1325376000000 - 1325376000000 - 1325376000000

Причина, по которой я написал один и тот же код для a и b, заключается в том, что http://www.w3schools.com/jsref/jsref_parse.asp говорит, что Date.parse возвращает значение в миллисекундах независимо от того, проходит ли время между этими строками.

Я использую Firefox 9.0.1, и результат правильный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...