Jquery / Javascript - каждая дата для отметки времени - PullRequest
2 голосов
/ 20 января 2012

Я пытаюсь создать функцию, которая преобразует каждую дату в метку времени.

JS

$(document).ready(function()
{
  var date1 = dateParser('Fri, 20 Jan 2012 09:30:02 +0000');
  $('body').append('date1 ->  '+date1.timeStamp +' / '+date1.isoDate + '<br />');

  var date2 = dateParser('2012-01-19T20:34:15+0000');    
  $('body').append('date2 ->  '+date2.timeStamp +' / '+date2.isoDate + '<br />');     
});  


function ISODateString(d) { function pad(n){ return n<10 ? '0'+n : n }
    return d.getUTCFullYear()+'-'
    + pad(d.getUTCMonth()+1)+'-'
    + pad(d.getUTCDate())+'T'
    + pad(d.getUTCHours())+':'
    + pad(d.getUTCMinutes())+':'
    + pad(d.getUTCSeconds())+'Z'
}

function dateParser(someDate) {
  if(typeof someDate == 'string') {
    var timeStamp = Date.parse(someDate) / 1000;
    var isoDate = ISODateString(new Date( timeStamp*1000 ));
  }
  if(typeof someDate == 'number') {
    var timeStamp = someDate;
    var isoDate = ISODateString(new Date( someDate*1000 ));
  }
  return {"timeStamp": timeStamp, "isoDate": isoDate };
}

пример: http://jsfiddle.net/L6uce/6/

Первая дата работает, но вторая возвращает NaN / NaN-NaN-NaNTNaN: NaN: NaNZ.Есть идеи?Может быть, есть лучший (более простой) способ?

Заранее спасибо!

1 Ответ

2 голосов
/ 20 января 2012

Смотрите здесь, чтобы узнать больше об ISO: http://en.wikipedia.org/wiki/ISO_8601

Замените "+0000" на Z, и оно работает.

"Объединение представлений даты и времени для представления одного момента времени (момента времени) довольно простое. В формате T указатель времени [T] используется для отображения начала компонента времени Компоненты даты и времени точки времени являются любыми точными представлениями даты и времени, указанными в стандарте. Например, «2007-04-05T14: 30» использует расширенные форматы для даты и времени [ГГГГ] - [ MM] - [ДД] T [чч]: [мм], в то время как «20090621T0545Z» использует основные форматы [ГГГГ] [ММ] [ДД] Т [чч] [мм] Z. "

...