Парсинг даты в длинном формате из ленты ATOM - PullRequest
2 голосов
/ 13 сентября 2009

Я получаю эту дату в javascript из RSS-канала (атом):

2009-09-02T07:35:00+00:00

Если я попытаюсь использовать Date.parse, я получу NaN.

Как я могу разобрать это в дату, чтобы я мог делать с ней что-то вроде даты?

Ответы [ 3 ]

4 голосов
/ 13 сентября 2009

Вот мой код с контрольными примерами:

function myDateParser(datestr) {
var yy   = datestr.substring(0,4);
var mo   = datestr.substring(5,7);
var dd   = datestr.substring(8,10);
var hh   = datestr.substring(11,13);
var mi   = datestr.substring(14,16);
var ss   = datestr.substring(17,19);
var tzs  = datestr.substring(19,20);
var tzhh = datestr.substring(20,22);
var tzmi = datestr.substring(23,25);
var myutc = Date.UTC(yy-0,mo-1,dd-0,hh-0,mi-0,ss-0);
var tzos = (tzs+(tzhh * 60 + tzmi * 1)) * 60000;
return new Date(myutc-tzos);
}


javascript:alert(myDateParser("2009-09-02T07:35:00+00:00"))
javascript:alert(myDateParser("2009-09-02T07:35:00-04:00"))
javascript:alert(myDateParser("2009-12-25T18:08:20-05:00"))
javascript:alert(myDateParser("2010-03-17T22:30:00+10:30").toGMTString())
3 голосов
/ 13 сентября 2009

Вы можете конвертировать эту дату в формат, который нравится Javascript достаточно легко. Просто удалите «Т» и все после «+»:

var val = '2009-09-02T07:35:00+00:00',
    date = new Date(val.replace('T', ' ').split('+')[0]);

Обновление: Если вам нужно компенсировать смещение часового пояса, вы можете сделать это:

var val = '2009-09-02T07:35:00-06:00',
    matchOffset = /([+-])(\d\d):(\d\d)$/,
    offset = matchOffset.exec(val),
    date = new Date(val.replace('T', ' ').replace(matchOffset, ''));
offset = (offset[1] == '+' ? -1 : 1) * (offset[2] * 60 + Number(offset[3]));
date.setMinutes(date.getMinutes() + offset - date.getTimezoneOffset());
2 голосов
/ 13 сентября 2009

может быть, этот вопрос может вам помочь.

если вы используете jquery , это тоже может быть полезно

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