Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中,将数字转换为日期格式yyyymmdd到mm/dd/yyyy_Javascript_Date - Fatal编程技术网

在javascript中,将数字转换为日期格式yyyymmdd到mm/dd/yyyy

在javascript中,将数字转换为日期格式yyyymmdd到mm/dd/yyyy,javascript,date,Javascript,Date,我正在获取一个XML提要,并使用JavaScript将其写入HTML 日期字段有: 20120319 我要做的是将其转换为更可读的格式,如: 2012年3月19日 在JavaScript中有没有一种简单的方法可以做到这一点?理想情况下,您应该使用不区分区域设置的日期格式,如“2012-03-19”,这在全球范围内是明确的。也就是说: var dateStr = "20120319"; var match = dateStr.match(/(\d{4})(\d{2})(\d{2})/); var

我正在获取一个XML提要,并使用JavaScript将其写入HTML

日期字段有:

20120319

我要做的是将其转换为更可读的格式,如:

2012年3月19日


在JavaScript中有没有一种简单的方法可以做到这一点?

理想情况下,您应该使用不区分区域设置的日期格式,如“2012-03-19”,这在全球范围内是明确的。也就是说:

var dateStr = "20120319";
var match = dateStr.match(/(\d{4})(\d{2})(\d{2})/);
var betterDateStr = match[2] + '/' + match[3] + '/' + match[1];
我会做你想做的。这是硬编码MDY。如果您想要DMY,就像大多数欧洲国家所使用的那样,那么交换
match[2]
match[3]

如果需要一种启发式方法来检测当前区域设置是首选月份还是首选日期,那么

(new Date('01/02/1970').getDate() === 2)
我可以帮忙

一种方法是写:

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

它使用正则表达式表示四位数字的序列,然后是两位数字的序列,然后是两位数字的序列,第二位加上一个
/
,第三位加上一个
/
,再加上第一位。

另一种方法是写

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

它只使用字符串对象。

(\d\d\d\d)
并不漂亮-更好的是
(\d{4})
@Neysor:如果OP提到了正则表达式,那么我会提供
\d{4}
,但事实上,我不确定他是否对正则表达式很熟悉,所以我认为最好使用尽可能简单的语法。谢谢大家的帮助。我最终使用了以下代码:
exp.replace(/(\d{4})(\d\d)(\d\d)/g,“$2/$3/$1”)+1不仅“在欧洲大部分地区使用”,而且在世界大部分地区使用。哦,不要相信Date来解析字符串,当您期望它时,它将失败。