2

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

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

4

1 回答 1

3

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

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

资料来源:Rails 3 Way - 第 2 版

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

于 2012-07-25T07:14:14.827 回答