【发布时间】:2011-05-19 18:43:37
【问题描述】:
我已经在 javascript 上苦苦挣扎了一个多小时,并想出了一个解决方案 - 向您寻求帮助!
RSS 提要以这种格式 2011-05-18T17:32:43Z 生成每个帖子的日期。我怎样才能让它看起来像 17:32 18.05.2011?
提前谢谢你!
【问题讨论】:
标签: javascript date format
我已经在 javascript 上苦苦挣扎了一个多小时,并想出了一个解决方案 - 向您寻求帮助!
RSS 提要以这种格式 2011-05-18T17:32:43Z 生成每个帖子的日期。我怎样才能让它看起来像 17:32 18.05.2011?
提前谢谢你!
【问题讨论】:
标签: javascript date format
假设您已将 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];
}
【讨论】:
您可以创建一个新的Date,从中取出片段并将所有内容连接起来:
function parse(date) {
var d = new Date(date)
return d.getHours() + ":" + d.getMinutes()
+ " " + d.getDate() + "." + (d.getMonth()+1)
+ "." + d.getFullYear();
}
【讨论】: