关于格式的Javascript日期问题

时间:2011-05-19 18:43:37

标签: javascript date format

我一直在努力使用javascript超过一个小时并提出了一个解决方案 - 请求您的帮助!

RSS Feed以此格式 2011-05-18T17:32:43Z 生成每个帖子的日期。如何让它看起来像 17:32 18.05.2011

提前谢谢!

2 个答案:

答案 0 :(得分:1)

假设您已将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;
}

可选择使用string-&gt;字符串:

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];
}

答案 1 :(得分:0)

您可以创建一个新的Date,从中获取片段并连接所有内容:

function parse(date) {
    var d = new Date(date)
    return d.getHours() + ":" + d.getMinutes() 
          + " " + d.getDate() + "." + (d.getMonth()+1)
          + "." + d.getFullYear();
}