Как превратить строку в дату в Javascript - PullRequest
1 голос
/ 05 мая 2010

Как я могу превратить эту строку

Sun Apr 25, 2010 3:30pm

В правильную дату в JavaScript (минимальный код - это то, к чему я стремлюсь)?

Ответы [ 3 ]

3 голосов
/ 05 мая 2010

Date.parse почти получает то, что вы хотите. Он задыхается от части am / pm, но при некотором взломе вы можете заставить его работать:

var str = 'Sun Apr 25, 2010 3:30pm',
    timestamp;

timestamp = Date.parse(str.replace(/[ap]m$/i, ''));

if(str.match(/pm$/i) >= 0) {
    timestamp += 12 * 60 * 60 * 1000;
}

Мини-код выглядит так:

var s = 'Sun Apr 25, 2010 3:30pm';

Date.parse(s.slice(0,-2))+432E5*/pm$/.test(s);
2 голосов
/ 05 мая 2010

Результат вашего подхода не гарантируется никакими спецификациями.

ECMAScript Edition 3 является подходящим и не определяет форматы, которые может анализировать Date.parse. Кроме того, в спецификации указывается, что когда Date.parse предоставляется значение, которое не может быть получено ни Date.prototype.toString, ни Date.prototype.toLocaleString, результат зависит от реализации.

... значение, генерируемое Date.parse, зависит от реализации, если задано любое строковое значение, которое не может быть получено в этой реализации методом toString или toUTCString.

Не ожидайте последовательных результатов от Date.parse при передаче в вашем собственном формате даты, зависящем от локали.

Можно использовать формат ISO-8601, а значение может быть проанализировано вашей программой. Смотрите также: Конструктор даты возвращает NaN в IE, но работает в Firefox и Chrome

2 голосов
/ 05 мая 2010

Вы можете попробовать Datejs http://www.datejs.com/ Это не потребует большого количества кода с вашей стороны, но потребует включения этого сценария в ваш html.

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