创建日期会自动将我输入的日期增加一小时

时间:2018-11-14 14:34:04

标签: javascript date datetime timezone momentjs

假设我以这个日期作为输入:

var _dateA = 2018-11-15T11:13:26.687Z

如果我在做什么,

var _dateB = new Date(_date)

var _dateB = moment(_date)

我得到的结果是==>

_dateB = Thu Nov 15 2018 12:13:26 GMT+0100 (heure normale d’Europe centrale)

我了解时区存在问题,但是如何在不超过一小时的情况下获取Date对象或Moment对象呢?

想要的结果=> Thu Nov 15 2018 11:13:26 GMT+0100

当前结果=> Thu Nov 15 2018 12:13:26 GMT+0100

2 个答案:

答案 0 :(得分:0)

您需要使用Date.toUTCString()使用UTC时区将日期转换为字符串

var _dateA = '2018-11-15T11:13:26.687Z';
var _dateB = new Date(_dateA);
console.log(_dateB.toUTCString());

答案 1 :(得分:0)

通过Dateconsole.log()等“输出” alert()对象时,默认使用toString()方法,将日期对象转换为本地时区字符串进行显示(这就是为什么您在本地时间看到日期的原因)。

不建议使用Date构造函数来解析日期字符串(尽管我怀疑大多数浏览器都可以很好地处理ISO 8601日期,就像您所询问的日期一样)-see the dateString parameter note here。因此,如果您需要构造日期对象并输出日期字符串,则可以使用多个分隔符的正则表达式字符集,使用split()解析ISO 8601字符串,然后使用{{ 1}}。您也可以使用moment.js做到这一点,但以下内容应更详细地说明正在发生的事情。

例如:

new Date(Date.UTC(...))