转换日期时错误的结果

时间:2016-04-07 22:14:25

标签: javascript jquery

我只是个初学者。我的原始日期是: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/

1 个答案:

答案 0 :(得分:2)

您的正则表达式不正确。 /(\d)+(st|nd|th)/g16th匹配,但捕获的组仅包含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给出的正则表达式。