Javascript可以查找并将数字日期替换为格式化日期吗?

时间:2010-03-10 06:25:41

标签: javascript regex

有人可以帮我解决javascript正则表达式问题吗? 我试图将字符串中的所有数字日期替换为格式化版本。 这就是我到目前为止所拥有的

txt = txt.replace(/\d{10}/g, 'Formatted Date Here');

这可能吗?任何帮助是极大的赞赏!谢谢!

3 个答案:

答案 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函数。