当我运行此代码时,第一个日期显示为 GMT,第二个日期显示为 BST。为什么是这样?对 Date.UTC
的调用除了更改了一个数字(即月份数字)之外,其他都是相同的。对我来说,这不应该改变时区。请注意,我现在在伦敦,所以不知何故第二次约会似乎回到了本地时间。为什么两个不同日期的时区不同?
var date1 = new Date(Date.UTC(2005,0,5,4,55,55));
alert(date1); // Wed Jan 05 2005 04:55:55 GMT+0000 (GMT)
var date2 = new Date(Date.UTC(2005,5,5,4,55,55)); // <-- 0 has been replaced by 5
alert(date2); // Sen Jun 05 2005 05:55:55 GMT+0100 (BST)
最佳答案
使用 Date.UTC(),仅影响使用 UTC 设置日期。
默认 Javascript 日期使用本地时间显示。
因此,如果您希望查看 UTC 格式的日期,。 您不能只使用默认的 toString() 实现,因为它将使用本地时间版本。
但是您可以做的是使用 UTC 变体进行显示。例如。 toUTCString()
以及 toISOString()
。
var date2 = new Date(Date.UTC(2005,5,5,4,55,55));
//if you say live in the UK, this date in localtime is
//British Summer Time,..
//eg. Sun Jun 05 2005 05:55:55 GMT+0100 (GMT Summer Time)
//if your running this script from another country
//your likely to see something different.
console.log(date2.toString());
//here we show the date in UTC, it will be same
//whatever country your running this from
//eg. Sun, 05 Jun 2005 04:55:55 GMT
console.log(date2.toUTCString());
//for an easier to parse date,
//eg. 2005-06-05T04:55:55.000Z
console.log(date2.toISOString());
关于javascript - 更改 Date.UTC() 中的月份数字会导致时区更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46325150/