【问题标题】:Can't find EST in ActiveSupport timezones在 ActiveSupport 时区中找不到 EST
【发布时间】:2012-04-18 23:07:59
【问题描述】:

我不知道如何开始...我不知道为什么 ActiveSupport::TimeZone 甚至是必要的,因为 TZInfo::Timezone 似乎工作得很好,而且更完整...但我们一直出于某种原因使用 ActiveSupport,我无法在可用时区中找到 EST 时区。我错过了什么吗?有什么不包括的原因吗?

有什么理由不使用 TZInfo 吗?每个人都应该只使用 TZInfo 吗?

【问题讨论】:

  • 我也很好奇这个问题;我维护一些使用 ActiveSupport::TimeZone 和 TZInfo::Timezone 来产生令人沮丧的效果的应用程序。试图找出前进的最佳方式,希望只有其中之一。

标签: ruby-on-rails timezone activesupport


【解决方案1】:

TimeZone 类用作 TZInfo::Timezone 实例的包装器。它允许 Rails 执行以下操作:

  • 将 TZInfo 提供的区域集限制为 142 个区域的有意义子集
  • 检索并显示具有更友好名称的区域(例如,“东部时间(美国和加拿大)”而不是“美国/纽约”)
  • 仅在需要时才延迟加载 TZInfo::Timezone 实例
  • 通过 TimeZone 的 local、parse、at 和 now 方法创建 ActiveSupport::TimeWithZone 实例。

来源:Rails 3 Way - 第 2 版

在 ActiveSupport::TimeZone 中提供了 EST,它被命名为“东部时间(美国和加拿大)”。您可以通过调用 TimeZone.all 来查看 ActiveSupport::TimeZone 提供的所有时区(前提是包含 ActiveSupport)。 EST 也包含在美国时区中,您可以通过调用 TimeZone.us_zones 返回一个较小的仅限美国时区的集合。访问 TimeZone 集合将提供一个 TimeZone,前面是它的偏移量,例如。 TimeZone("东部时间(美国和加拿大)"] => (GMT-05:00) 东部时间(美国和加拿大)。

【讨论】:

  • 我不知道为什么我找不到 EST……它现在似乎在那里。也许它是一个旧版本?我不知道。感谢您对两个课程的澄清! :)
  • 我不知道 #us_zones 方法,它帮助我在我们的应用程序中偏爱美国时区,因为这是大多数用户所在的地方。谢谢!
猜你喜欢
  • 1970-01-01
  • 2019-04-25
  • 2021-11-02
  • 2019-04-09
  • 2020-02-20
  • 2021-09-19
  • 1970-01-01
  • 2021-11-10
  • 1970-01-01
相关资源
最近更新 更多