时区错误和特定于语言环境的时间显示问题

时间:2016-07-09 04:19:33

标签: sql-server ruby-on-rails-4 timezone location momentjs

所以,我们绝对没有理由在这个时代遇到这个问题,但我们确实如此。我们的数据库有日期时间列,当从数据库中提取日期时,它们将被检索为CDT(一年中的这个时候,冬天的CST)。然后,该时间作为CDT通过JSON传递给UI。这可不错。

存储在数据库中的时间是相对于数据中指定位置的时间。因此,如果我们在美国东部夏令时间晚上6点从洛杉矶旅行到美国东部时间晚上11点,那么开始时间将从数据库中检索为早上6点CDT,结束时间将在晚上11点CDT检索。

要求:

  1. UI需要在数据的本地时间显示,上一个示例中的上午6点和下午11点。
  2. 用户界面需要在不久的将来指示项目,例如在接下来的3个小时内到达。
  3. 编辑数据时,需要以相同的方式输入,用户在洛杉矶进入早上6点,在纽约进入晚上11点。
  4. 用户还需要能够输入相对于当前时间的时间,例如从现在起5小时内输入“H + 5”。
  5. UI需要根据时间进行排序。这是一个很好的,因为他们习惯使用的应用程序也没有这样做。
  6. 我们目前的解决方案是将我们的头埋在沙子中并展示它(未经测试用于其他时区的浏览器,例如我们在加利福尼亚办事处的浏览器),这实际上是非常有效的,尽管它在语义上并不完全正确。

    1. 11PM CDT从数据库中读取
    2. 显示为11PM,用户理解为EDT
    3. 用户编辑它,放入10PM
    4. 它被解析为10PM CDT并按照我们想要的那样保存。
    5. 当前解决方案失败的地方相对于当前时间而言。

      1. 11PM CDT从数据库中读取
      2. 显示为11PM,用户理解为EDT
      3. 用户编辑它,输入“NOW”(假设用户的本地时钟是9PM CDT)
      4. 它被解析为9PM CDT并以此方式保存,但它应该是10PM,因为它是在纽约的晚上10点!
      5. 我正在寻找一种方法来处理这五个并非完全可怕的案例。我对任何层(上面详述的体系结构)中的解决方案持开放态度,但存在约束,因为我们与另一个应用程序共享数据库。如果有其他工具/框架可用并且与我们已有的工具/框架相符合,我愿意使用它们。

        • 数据库:SQL Server 2008
        • API:带有JSON响应的Rails
        • 前端:JS + Moment +与日期无关的其他内容
        • 任何纠正数据和/或架构的尝试都是不可能的,因为我们会破坏其他应用程序。
        • 通常可以添加新的视图/表格列/表格/存储过程。
        • 不允许添加索引。任何更具异国情调的特征的状态都是未知的。
        • 有许多表/端点受此问题影响,因此任何暴力解决方案都将非常繁琐。
        • 任何解决方案只需在美国大陆工作。
        • 请注意,这不是一个简单的时区转换,因为我们从数据库返回的时区是错误的,因此时区的转换也是错误的。

0 个答案:

没有答案