【发布时间】:2019-09-16 09:32:06
【问题描述】:
"new Date().getTimezoneOffset()" 似乎总是返回物理位置时间偏移,无论您的设备时区设置是什么。
例如,如果我早上 9 点在西雅图,则 iphone 时区设置为自动。 iPhone 在上午 9 点显示正确时间,getTimezoneOffset() 返回 420。 将 iphone 时区更改为手动,蒙特利尔,电话时间变为下午 12 点。但是,getTimezoneOffset() 仍然返回 420,而我希望像东海岸时间一样拥有 240。
我想测试时区处理。我如何实现这一目标(实际上不飞往蒙特利尔)?
(编辑澄清) 将 iPhone 时区设置为多伦多(偏移量 -04:00),
moment().utcOffset()
返回真实设备时区 -420,而不是时区设置 -240。
(编辑 2) 请注意,我想获取 iPhone 时区设置,而不是通过字符串硬编码特定时区。
【问题讨论】:
-
您是否尝试过使用 Moment.js 库?这里stackoverflow.com/questions/29295846/…
-
@HarshitAgrawal 我试过 const minOffset = moment().tz('America/Seattle').utcOffset() - moment().utcOffset();并得到 0 个偏移量。
-
这可能是 iPhone 特有的东西。某些浏览器不会读取系统时区,除非在启动时读取一次。更改设置后尝试杀死浏览器并重新启动它。
-
另外,
America/Seattle不是有效的 IANA 时区标识符,本地时间功能不需要 moment-timezone。 -
@oiman 你说“没有浏览器”。如果您确实在浏览器中运行 new Date().getTimezoneOffset() 会发生什么?与您的应用相同的行为?
标签: javascript date react-native timezone