在JavaScript中将数字转换为日期格式yyyymmdd至mm/dd/yyyy

3
我正在使用JavaScript将XML数据转换为HTML。
日期字段如下: 20120319 我想将其转换为更易读的格式,如下: 03/19/2012 在JavaScript中有一种简单的方法可以实现吗?

1
感谢大家的帮助。我最终使用了这段代码:exp.replace(/(\d{4})(\d\d)(\d\d)/g, '$2/$3/$1'); - Daniel
3个回答

8

一种方法是这样写:

s = s.replace(/(\d\d\d\d)(\d\d)(\d\d)/g, '$2/$3/$1');

使用正则表达式替换四位数字,后跟两位数字,再后跟两位数字的序列,将第二个数字加上/,再加上第三个数字,再加上/,最后加上第一个数字。


(\d\d\d\d) 不够美观 - 更好的写法是 (\d{4}) - Neysor
1
@Neysor:如果原帖提到了正则表达式,那么我会提供\d{4},但由于没有提到,我不确定原帖作者是否对正则表达式有任何了解,所以我认为最好使用尽可能简单的语法。 - ruakh

7
理想情况下,您应该使用不受区域限制的日期格式,如“2012-03-19”,这是全球通用的日期格式。尽管如此:
var dateStr = "20120319";
var match = dateStr.match(/(\d{4})(\d{2})(\d{2})/);
var betterDateStr = match[2] + '/' + match[3] + '/' + match[1];

该代码将按照美国的日期格式(月/日/年)进行硬编码。如果你想使用大部分欧洲国家使用的日期格式(日/月/年),请交换match[2]match[3]

如果你想要根据当前语言环境的偏好(月份在前还是日期在前)来自动判断日期格式,可以使用以下启发式方法:

(new Date('01/02/1970').getDate() === 2)

可以帮忙。

+1 不仅仅是“在大多数欧洲国家使用”,而是在世界大部分地区都使用。哦,还有不要相信 Date 来解析字符串,它会在你最不希望的时候失败。 - RobG

0

另一种方法是编写

var s = String("20181011"); s = s.slice(4,6)+"/"+s.slice(6,8)+"/"+s.slice(0,4)

仅使用String对象。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接