繁体   English   中英

日期选择器获取给定时区的日期而不是本地时间

[英]Date Picker get Date in given timezone instead of local time

在我的反应应用程序中,当我使用 moment-timezone 包(具有不同的时区)为日期选择器创建新的日期 object 时,时间会自动转换为本地系统时间 + 选择的时区时间。 有没有办法在客户端设置一个时区来创建一个新的日期 object ? 我使用时刻时区进行全球化和 Meteor Js 用于后端

如果我理解正确,您的问题是您想提供一个日期选择器 UI,该 UI 会根据所选日期和用户时区设置(从您的数据库中检索)自动生成日期 object,但您得到的是用户本地时间的日期(因此可能已经有一些时区偏移)+用户时区偏移设置。

您主要有 3 种可能的解决方案:

  1. 让日期选择器 UI 始终提供 UTC 日期(通常在 UTC 午夜),然后添加用户的时区偏移设置。
  2. 让日期选择器 UI 将用户的时区设置作为配置,以便在自动生成日期时使用该时区偏移配置。
  3. 让日期选择器 UI 在浏览器本地时间中提供日期,然后将其转换为 UTC,然后添加用户的时区偏移设置。

UTC 中的选项 1 DatePicker:我还没有看到任何提供此类选项的库,但听起来并不奇怪,因此您可能会找到一个提供此类选项的库。 或者您可能会摆弄组件代码......与选项 3 相比,这可能是矫枉过正。

带有时区配置的选项 2 DatePicker:从您的评论来看,这听起来像您所期望的。 不幸的是,我也没有看到任何提供此类功能的库。 由于这听起来比选项 1 更具体,因此您不太可能找到这样的库。

选项 3 本地时间转移到 UTC 然后添加用户时区:这是实现在给定时区生成日期的目标的标准做法,从本地时间的日期开始,因为所有 DatePicker UI 只使用本地时间来简化事物。 至于将本地时间转换为 UTC,您应该已经有很多关于 SO 的问题和答案。

如果您必须为日期选择器 UI 提供初始值(通常是数据库中的先前值),请确保执行反向操作,即减去用户的时区偏移设置以获取 UTC 日期,然后切换到浏览器语言环境时间。 当本地时间与 UTC 有负偏移时,我已经看到忽略这部分并且日期不正确的应用程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM