【问题标题】:How can we convert a time from EDT to EST in rails?我们如何在 Rails 中将时间从 EDT 转换为 EST?
【发布时间】:2015-05-14 05:55:46
【问题描述】:

我知道 EDT 和 EST 之间的区别只是 1 小时的夏令时,但我仍然认为 Rails 将其视为不同的时区,对吧?

现在,我有两个时间值,一个在 EDT 区域,另一个在 IST。我需要将这两个时间值都转换为 EST。我可以在 IST 时间成功完成,但不能使用 EDT。如何在 Rails 中将 EDT 时间转换为 EST?

[36] pry(#<Quiz>)> Time.zone
=> (GMT-05:00) Eastern Time (US & Canada)
[37] pry(#<Quiz>)> from_date
=> 2015-03-02 00:00:00 +0530
[38] pry(#<Quiz>)> unlock_at
=> Mon, 16 Mar 2015 00:00:00 EDT -04:00
[39] pry(#<Quiz>)> from_date.in_time_zone
=> Sun, 01 Mar 2015 13:30:00 EST -05:00
[40] pry(#<Quiz>)> unlock_at.in_time_zone
=> Mon, 16 Mar 2015 00:00:00 EDT -04:00

任何帮助将不胜感激:)

【问题讨论】:

    标签: ruby-on-rails timezone activesupport


    【解决方案1】:

    我知道 EDT 和 EST 之间的区别只是 1 小时的夏令时,但我仍然认为 Rails 将其视为不同的时区,对吧?

    我不希望它,不。它们本身并不是不同的时区——它们只是东部时区的不同部分。不幸的是,据我所知,这个“时区的一部分”概念没有一个公认的术语。

    在 EST 和 EDT 之间进行转换通常没有任何意义 - 假设您谈论的是单个时区 - 因为在观察 EST 时或者会发生任何一个瞬间 当观察到 EDT 时。谈论(比如说)“美国东部标准时间 6 月 12 日上午 10 点”是荒谬的(尽管我知道它会发生),因为美国东部标准时间在 6 月不生效。在人类对话中,不清楚说话者实际上是指 UTC-5(不知道夏令时)还是 UTC-4(不知道 EST 中 S 的含义)。

    只有当你有两个时区时才有意义,这两个时区都是东部的变体,但有不同的过渡点。在这种情况下,您真的应该只讨论这两个时区之间的转换。

    基本上,您显示的当前输出是完全合理的 - 您将两个时间点转换为东部时区,一个落在观察 EST 的时期,另一个落在它的时期观察美国东部时间。您应该试图在 EST 中表示后者,因为它在那个时候不存在。

    如果您想以 UTC-5 的固定偏移量表示所有内容,您应该这样做 - 但不要声称它是 EST。

    【讨论】:

      【解决方案2】:

      我认为您不必担心 EST EDT 转换。 您必须将时区设置为东部,并根据当天是 EDT 还是 EST 显示时间。

      试试这个;)

      Time.now.in_time_zone("Eastern Time (US & Canada)") (Time.now + 8.months).in_time_zone("Eastern Time (US & Canada)")

      【讨论】:

        猜你喜欢
        • 2011-07-26
        • 2020-09-06
        • 2022-01-06
        • 1970-01-01
        • 1970-01-01
        • 2023-03-20
        • 2021-10-27
        • 2014-06-25
        • 1970-01-01
        相关资源
        最近更新 更多