我们如何在 rails 中将时间从 EDT 转换为 EST?

How can we convert a time from EDT to EST in rails?

我知道 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

任何帮助将不胜感激:)

I know the difference between EDT and EST is just in the Day Light Saving of 1 hour, but still I assume Rails treats it as different time zones, right?

我没想到,不。它们本身并不是不同的时区——它们只是东部时区的不同部分。不幸的是,据我所知,这个 "part of a time zone" 概念没有一个公认的术语。

EST 和 EDT 之间的转换通常没有任何意义 - 假设你在谈论一个单一的时区 - 因为任何一个瞬间都会发生 或者 当 EST当观察到 EDT 时观察到 。谈论(比如)"June 12th, 10am EST" 是荒谬的(即使我知道它会发生),因为 EST 在 6 月没有生效。在人类对话中,不清楚说话者 实际上 是指 UTC-5(不知道夏令时)还是 UTC-4(不知道 EST 中 S 的含义)。

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

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

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

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

试试这个 ;)

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