有人可以帮我解决javascript正则表达式问题吗? 我试图将字符串中的所有数字日期替换为格式化版本。 这就是我到目前为止所拥有的
txt = txt.replace(/\d{10}/g, 'Formatted Date Here');
这可能吗?任何帮助是极大的赞赏!谢谢!
答案 0 :(得分:3)
试试这个:
str = str.replace(/\d{10}/g, function($0) {
return new Date($0*1000);
});
Date
接受以毫秒为单位的时间。这就是你将匹配(在$0
中传递)与1000相乘的原因。
如果您想要与默认格式不同的格式,请查看methods of a Date instance。这是一个例子:
str = str.replace(/\d{10}/g, function($0) {
var d = new Date($0*1000);
return (d.getMonth() + 1) + ", " + d.getDate() + ", " + (d.getHours() % 12 || 12) + ":" + d.getMinutes() + " " + (d.getHours() < 12 ? 'AM' : 'PM');
});
此处张贴的JavaScript Date.format functon Amarghosh可能对您有所帮助。
答案 1 :(得分:1)
您可以将replace()
与函数回调一起使用来实现此目的:
var txt = "This is a test of 1234567890 and 1231231233 date conversion";
txt = txt.replace(/\d{10}/g, function(s) {
return new Date(s * 1000);
});
alert(txt);
输出:
This is a test of Sat Feb 14 2009 07:31:30 GMT+0800 and Tue Jan 06 2009 16:40:33 GMT+0800 date conversion
您需要调整此项以使用正确的日期格式。您还需要考虑时区问题。客户端上的时区不一定与服务器上的时区相同。
您甚至可以更好地格式化服务器上的日期以避免此类问题。
答案 2 :(得分:0)
您确定要使用正则表达式吗?这是您可能想要查看的JavaScript Date format函数。