首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Date.toString的时区在Node/Chrome中会发生变化,我如何将其改回来?

问为什么Date.toString的时区在Node/Chrome中会发生变化,我如何将其改回来?
EN

Stack Overflow用户
提问于 2018-10-19 18:29:30
回答 1查看 59关注 0票数 0

似乎在Node的v8和v10之间,以及Chrome中的类似时间(目前在版本69.0.3497.100中重现),Date.toString方法停止将输出的时区部分作为首字母缩写返回,并开始将其作为整个单词返回。

MDN的Date.toString示例表明

new Date('August 19, 1975 23:15:30').toString()

应返回首字母缩写,如

Tue Aug 19 1975 23:15:30 GMT+0100 (BST)

但是,当我在Node v10中运行相同的代码时,我收到以下信息:

Tue Aug 19 1975 23:15:30 GMT+0100 (British Summer Time)

在不使用任何字符串代码或从单词中手动创建首字母的情况下,是否有方法提取当前时区的首字母?

请注意,任何解决方案都应该在Node和Chrome中工作。

EN

回答 1

Stack Overflow用户

发布于 2018-10-19 18:44:11

解决方案应该是将options对象的timeZoneName属性设置为"short"或"long" (MDN link) -但这只是GMT+1的缩写:

代码语言:javascript
复制
> d = new Date
> d.toLocaleString('en-US',{timeZone:'America/Los_Angeles',timeZoneName:'long'}) 
'10/19/2018, 3:31:04 AM Pacific Daylight Time'
> d.toLocaleString('en-US',{timeZone:'America/Los_Angeles',timeZoneName:'short'})
'10/19/2018, 3:31:04 AM PDT'
> d.toLocaleString('en-US',{timeZone:'Europe/London',timeZoneName:'long'})
'10/19/2018, 11:31:04 AM British Summer Time'
> d.toLocaleString('en-US',{timeZone:'Europe/London',timeZoneName:'short'})
'10/19/2018, 11:31:04 AM GMT+1'

火狐还为我提供了GMT+1的简写和GMT+01:00的长写。

如果您确实需要专区名称,请查看Moment --请参阅abbreviated time zone names上的相关部分。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52890573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档