我只是个初学者。我的原始日期是:2016年9月16日星期五,09:00
我需要将其转换为以下格式:Fri Sep 16 2016 09:00:00 GMT + 0000(GMT)
但是我的代码显示错误的日期:Tue Sep 06 2016 09:00:00 GMT + 0100(BST)
请在此处查看我的代码:
var startdate = "Friday, September 16th 2016, 09:00";
var sdate = new Date(startdate.replace(/(\d)+(st|nd|th)/g, '$1'));
alert(new Date(sdate));
有人可以帮我解决这个问题吗?示例如下:https://jsfiddle.net/5hzwbbku/3/
通过使用momentjs,我收到了奇怪的结果:https://jsfiddle.net/5hzwbbku/13/
答案 0 :(得分:2)
您的正则表达式不正确。 /(\d)+(st|nd|th)/g
与16th
匹配,但捕获的组仅包含6
。要返回16
,您的正则表达式必须为/(\d+)(st|nd|th)/g
,如下所示:
var sdate = new Date(startdate.replace(/(\d+)(st|nd|th)/g, '$1'));
如果您需要时间为UTC,则必须附加时区,例如+0
,+0000
或简称Z
(祖鲁时间)。
var startdate = "Friday, September 16th 2016, 09:00";
startdate = startdate + ' +0000';
var sdate = new Date(startdate.replace(/(\d+)(st|nd|th)/g, '$1'));
alert(new Date(sdate));
在我的系统上返回Fri Sep 16 2016 11:00:00 GMT+0200 (CEST)
,这是UTC中的09:00。
正确匹配的其他正则数为/(\d)(st|nd|th)/g
(请注意完全没有+
)以及评论/(.\d)+(st|nd|th)/g
中由pastine给出的正则表达式。