【问题标题】:Javascript date question about format关于格式的Javascript日期问题
【发布时间】:2011-05-19 18:43:37
【问题描述】:

我已经在 javascript 上苦苦挣扎了一个多小时,并想出了一个解决方案 - 向您寻求帮助!

RSS 提要以这种格式 2011-05-18T17:32:43Z 生成每个帖子的日期。我怎样才能让它看起来像 17:32 18.05.2011?

提前谢谢你!

【问题讨论】:

标签: javascript date format


【解决方案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->你可以使用的字符串:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-07-03
      • 1970-01-01
      • 2020-03-18
      • 1970-01-01
      • 2013-07-01
      • 1970-01-01
      • 2011-09-20
      相关资源
      最近更新 更多