Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript new Date().getTimezoneOffset()和new Date(string.getTimezoneOffset()之间有什么区别?_Javascript_Date_Timezone_Timezone Offset - Fatal编程技术网

Javascript new Date().getTimezoneOffset()和new Date(string.getTimezoneOffset()之间有什么区别?

Javascript new Date().getTimezoneOffset()和new Date(string.getTimezoneOffset()之间有什么区别?,javascript,date,timezone,timezone-offset,Javascript,Date,Timezone,Timezone Offset,我最近注意到,这两个值在某些日期是不同的 例如,对于04/01/2020,两者的输出相同,但对于03/01/2020则不同 console.log( 新日期(“2020/03/01”)。getTimezoneOffset(),/-210 新日期().getTimezoneOffset(),//-270 ); console.log( 新日期(“2020/04/01”)。getTimezoneOffset(),/-270 新日期().getTimezoneOffset(),//-270 ); 我

我最近注意到,这两个值在某些日期是不同的

例如,对于
04/01/2020
,两者的输出相同,但对于
03/01/2020
则不同

console.log(
新日期(“2020/03/01”)。getTimezoneOffset(),/-210
新日期().getTimezoneOffset(),//-270
);
console.log(
新日期(“2020/04/01”)。getTimezoneOffset(),/-270
新日期().getTimezoneOffset(),//-270
);
我在今年的所有月份都做了这个测试,结果是:

  • 2020/01/01
    ->不同的
  • 2020/02/01
    ->不同
  • 2020/03/01
    ->不同
  • 2020/04/01
    ->相同
  • 2020/05/01
    ->相同
  • 2020/06/01
    ->相同
  • 2020/07/01
    ->相同
  • 2020/08/01
    ->相同
  • 2020/09/01
    ->相同
  • 2020/10/01
    ->不同
  • 2020/11/01
    ->不同
  • 2020/12/01
    ->不同

函数
getTimezoneOffset
返回本地时区相对于UTC的偏移量,该偏移量应用于调用它的
日期
对象实例所表示的时间时刻

  • 如果您在
    new Date()
    上调用它,您将请求当前偏移量,因为默认构造函数将
    Date
    对象的时间戳设置为当前值,这也是由
    Date.now()
    给出的

  • 如果您在
    新日期(值)
    上调用它,您将请求应用于该值所表示的时刻的偏移量

时区偏移量不是固定的,而是由政府建立的,可以很容易地改变。它们改变的一个原因是夏令时(DST),夏令时在一年中的部分时间可能适用于或不适用于给定的时区。他们可能改变的其他原因是政府关于修改DST遵守情况、DST开始和停止日期或时间的政策,或标准时间偏移的变化。由于这些类型的更改会产生历史差异,因此当您使用
getTimezoneOffset
请求与UTC的偏移量时,有必要知道您询问的时间点

您可以在中标题为“时区!=偏移量”的部分中了解更多有关这方面的信息


还有一件事-您为字符串(“2020/03/01”)提供的格式是非标准的。给定的JavaScript引擎可能支持它,也可能不支持它,但它不是规范的一部分。相反,您应该使用
“2020-03-01”
(如果您是指该日期的午夜UTC),或者
“2020-03-01T00:00:00”
(如果您是指该日期的午夜本地时间)。

可以是。一个返回当前本地偏移量,另一个返回解析字符串的偏移量,这可能是无效或意外的日期或主机系统的设置指示不同偏移量的时间。