Node.js 2019年使用巴西夏季时间的节点

Node.js 2019年使用巴西夏季时间的节点,node.js,linux,timezone,Node.js,Linux,Timezone,我试图使用NodeJS日期,但它返回的日期是巴西夏季时间(-2),而不是正常的日期(-3)。今年巴西没有夏季,所以应该是-3 我在节点REPL中尝试了:newdate().toString(),输出为:“Mon Dec 02 2019 11:22:28 GMT-0200(巴西利亚夏季时间)”。我尝试使用ENV将TZ设置为美国/圣保罗,结果相同 我的计算机中的时间应该是-3:如果我在我得到的终端中运行date,那么在Python REPL中,结果也是正确的。我建议确保您正在为LTS或当前版本运行最

我试图使用NodeJS日期,但它返回的日期是巴西夏季时间(-2),而不是正常的日期(-3)。今年巴西没有夏季,所以应该是-3

我在节点REPL中尝试了:
newdate().toString()
,输出为:
“Mon Dec 02 2019 11:22:28 GMT-0200(巴西利亚夏季时间)”
。我尝试使用ENV将TZ设置为
美国/圣保罗
,结果相同


我的计算机中的时间应该是-3:如果我在我得到的终端中运行
date
,那么在Python REPL中,结果也是正确的。

我建议确保您正在为LTS或当前版本运行最新的Node.js版本,例如12.13.1+或13.2+

对于LTS,我相信您需要版本12.13.1,更改日志如下:,这显示了巴西DST更改的更新

由于DST更改是在2019年4月进行的(我相信),较旧的节点版本无法反映这些更改

如果我将时区设置为巴西,并执行以下操作(在节点12.13.1中):

我得到输出:

Current time: Mon Dec 02 2019 11:20:56 GMT-0300 (Brasilia Standard Time)
哪个是正确的

但是,我使用节点12.13.0获得了-2小时的UTC偏移量

我还建议尝试,如果这不起作用,它们已经更新以反映巴西DST的变化,您可以:

console.log(moment("2019-06-01T00:00:00Z").tz("America/Sao_Paulo").format());
console.log(moment("2019-12-01T00:00:00Z").tz("America/Sao_Paulo").format());
这是给我的结果:

2019-05-31T21:00:00-03:00
2019-11-30T21:00:00-03:00
我认为这是正确的(UTC-3:00)

您还可以从中获取UTC偏移量

console.log(moment.tz.zone("America/Sao_Paulo").utcOffset(new Date("2019-06-01T00:00:00Z").getTime())); 
console.log(moment.tz.zone("America/Sao_Paulo").utcOffset(new Date("2019-12-01T00:00:00Z").getTime()));

对于12月1日和6月1日,这应该是180分钟(这实际上是UTC偏移量的负数,这是由于IANA时区数据库,很容易切换符号)。

我建议确保运行LTS或当前版本的最新Node.js,例如12.13.1+或13.2+

对于LTS,我相信您需要版本12.13.1,更改日志如下:,这显示了巴西DST更改的更新

由于DST更改是在2019年4月进行的(我相信),较旧的节点版本无法反映这些更改

如果我将时区设置为巴西,并执行以下操作(在节点12.13.1中):

我得到输出:

Current time: Mon Dec 02 2019 11:20:56 GMT-0300 (Brasilia Standard Time)
哪个是正确的

但是,我使用节点12.13.0获得了-2小时的UTC偏移量

我还建议尝试,如果这不起作用,它们已经更新以反映巴西DST的变化,您可以:

console.log(moment("2019-06-01T00:00:00Z").tz("America/Sao_Paulo").format());
console.log(moment("2019-12-01T00:00:00Z").tz("America/Sao_Paulo").format());
这是给我的结果:

2019-05-31T21:00:00-03:00
2019-11-30T21:00:00-03:00
我认为这是正确的(UTC-3:00)

您还可以从中获取UTC偏移量

console.log(moment.tz.zone("America/Sao_Paulo").utcOffset(new Date("2019-06-01T00:00:00Z").getTime())); 
console.log(moment.tz.zone("America/Sao_Paulo").utcOffset(new Date("2019-12-01T00:00:00Z").getTime()));
12月1日和6月1日这两天都应该有180分钟的时间(这实际上是UTC偏移量的负数,这是由于IANA时区数据库,很容易切换符号)。

,我看到了,但没有有效的解决方案,问题中缺少信息