JavaScript日期时区问题?

时间:2016-05-19 13:14:15

标签: javascript datetime

如果我在美国时区,请在下面的代码中提醒,如何解决此问题?


d = new Date("2016-05-31");
alert(d);

我不确定为什么会发生这种情况,如果我在印度时区它显示正常。

2 个答案:

答案 0 :(得分:2)

您使用缩写的ISO时间字符串初始化日期实例,因此默认时区为GMT(Z)。相反,您可以使用接受数字年,月和日的三参数构造函数:

var d = new Date(2016, 4, 31);

这将假设当地时区。请注意,月份从零开始编号。

答案 1 :(得分:1)

您可以使用以下方式创建日期:

var date = new Date(2016, 4, 31);

或者,您可以使用当前方法设置日期的UTC小时数(不太可取,给定浏览器/区域日期不兼容):

var date = new Date("2016-05-31");
date.setUTCHours(0);

尝试此脚本并检查控制台的输出以突出显示差异:

var date1 = new Date('2016-05-31');
var date2 = new Date(2016, 4, 31);

var str1 = date1.toISOString();
var str2 = date2.toISOString();

console.log('date1', date1, str1, date1.getUTCHours(), date1.toUTCString());
console.log('date2', date2, str2, date2.getUTCHours(), date2.toUTCString());

date1.setUTCHours(0);
date2.setUTCHours(0);

console.log('date1', date1, str1, date1.getUTCHours(), date1.toUTCString());
console.log('date2', date2, str2, date2.getUTCHours(), date2.toUTCString());

您可能还希望查看Moment.js时间库。具体来说,是Moment.js timezone库。