Javascript дата вопрос о формате - PullRequest
1 голос
/ 19 мая 2011

Я боролся с JavaScript больше часа и придумал решение - попросить вас о помощи!

Лента RSS генерирует дату каждого сообщения в этом формате 2011-05-18T17: 32: 43Z . Как мне сделать так, чтобы 17: 32 18.05.2011 ?

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

Ответы [ 2 ]

1 голос
/ 19 мая 2011

Предполагая, что вы проанализировали дату RSS в объект JS Date (что может быть сложно, так как многие реализации Date.parse не принимают даты ISO-8601 в таком виде) ...

//var d=new Date(/*...*/)
// 17:32 18.05.2011
pad(d.getHours())+':'+d.getMinutes()+' '+
  pad(d.getDate())+'.'+pad(d.getMonth()+1)+d.getFullYear();

( getMonth возвращает месяц 0-11)

... вам также понадобится какая-то нулевая буферизация для месяца (в вашем примере) и, возможно, для дня, часа (в зависимости) ....

function pad(val,len) {
  var s=val.toString();
  while (s.length<len) {s='0'+s;}
  return s;
}

При желании из строки-> строка вы можете использовать:

function reformat(str) {
  var isodt=string.match(/^\s*(\-?\d{4}|[\+\-]\d{5,})(\-)?(\d\d)\2(\d\d)T(\d\d)(:)?(\d\d)?(?:\6(\d\d))?([\.,]\d+)?(Z|[\+\-](?:\d\d):?(?:\d\d)?)\s*$/i);
  if (isodt===null) {return '';} // FAILED
  return isodt[5]+':'+isodt[7]+' '+isodt[4]+'.'+isodt[3]+'.'+isodt[1];
}
0 голосов
/ 19 мая 2011

Вы можете создать новый Date, извлечь из него фрагменты и объединить все:

function parse(date) {
    var d = new Date(date)
    return d.getHours() + ":" + d.getMinutes() 
          + " " + d.getDate() + "." + (d.getMonth()+1)
          + "." + d.getFullYear();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...