使用javascript(可能是正则表达式)格式化日期
我正在使用JavaScript和JQuery,我得到了如下字符串(不可更改的xml响应): 我如何转换为这样的日期:使用javascript(可能是正则表达式)格式化日期,javascript,jquery,regex,date,Javascript,Jquery,Regex,Date,我正在使用JavaScript和JQuery,我得到了如下字符串(不可更改的xml响应): 我如何转换为这样的日期: 08 january 2017, 16:06:52 或者至少: 08 01 2017, 16:06:52 我试图使用.replace()类似于: str = str.replace(/(\d{4})-(\d{2})-(\d{2})T(\d{8}).*/,'$2 $3 $1, $4'); 但它不起作用(要执行此操作,您可以从字符串创建一个Date()对象,然后将Date()对
08 january 2017, 16:06:52
或者至少:
08 01 2017, 16:06:52
我试图使用.replace()
类似于:
str = str.replace(/(\d{4})-(\d{2})-(\d{2})T(\d{8}).*/,'$2 $3 $1, $4');
但它不起作用(要执行此操作,您可以从字符串创建一个
Date()
对象,然后将Date()
对象公开的方法中的字符串连接在一起。请尝试以下操作:
var str=“2017-01-08T16:06:52+00:00”;
var日期=新日期(str);
风险值月份=[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”];
var dateString=(“00”+日期.getDate()).slice(-2)+“+月[date.getMonth()]”+“+日期.getFullYear()+”,+(“00”+日期.getHours()).slice(-2)+:“+(“00”+日期.getMinutes()).slice(-2)+:”+(“00”+日期.getSeconds()).slice(-2);
console.log(dateString);
或者,如果您可以使用添加库的选项,则可以选择并传递希望的输出方式,例如:
var str=“2017-01-08T16:06:52+00:00”;
var momentDate=力矩(str);
console.log(momentDate.format('DD-MMMM-YYYY-HH:mm:ss');
您的正则表达式不太正确,\d{8}
将匹配8个连续数字,但其中也有冒号,您需要类似以下内容:
var str=“2017-01-08T16:06:52+00:00”
str=str.replace(/(\d{4})-(\d{2})-(\d{2})T(.{8})。*/,“$2$3$1,$4”);
console.log(str)
新日期(“2017-01-08T16:06:52+00:00”).toLocaleString()
或者新日期(“2017-01-08T16:06:52+00:00”).togmString().split(/\W/)
无需密码即可获得花哨的名字list@dandavis虽然要简单得多,但不幸的是,这将使用客户端计算机上指定的日期格式。如果OP要求日期始终以他们指定的格式显示,他们将需要手动编码格式。@RoryMcCrossan:我还演示了如何使用GMT在不使用whit的情况下获取零件名称列表…使用部件数组,自定义格式很简单。我知道,但它仍然使用客户端计算机的格式。上面的输出是Sun,08,Jan,2017,16,06,52,GMT
的数组,我怀疑这也不是您想要的。@RoryMcCrossan:我得到完全相同的部件,因为GMTString是标准化的,而不是本地的通过使用这些部件,你可以制作一个自定义格式:类似于p[1]+“,“+p[3]+”:“+p[5]+”:“+p[2];
或其他什么……只是另一个选项;)moment(newdate())
产生与moment()
相同的结果,但更容易键入。;-)如果使用moment.js,它也应该使用它进行解析,因为OP的字符串是ISO 8601格式的moment(str)
将完成这项工作。
str = str.replace(/(\d{4})-(\d{2})-(\d{2})T(\d{8}).*/,'$2 $3 $1, $4');