我们如何在铁路上将EDT的时间转换为EST?

时间:2015-03-12 06:59:38

标签: ruby-on-rails timezone activesupport

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

非常感谢任何帮助:)

2 个答案:

答案 0 :(得分:5)

  

我知道EDT和EST之间的区别仅在于1小时的节约日,但我仍然认为Rails将其视为不同的时区,对吗?

我不希望它,不。它们本身并不是不同的时区 - 它们只是东部时区的不同部分。遗憾的是,这个&#34;时区的一部分并没有被接受的术语&#34;这个概念,据我所知。

EST和EDT之间的转换通常没有任何意义 - 假设您正在谈论单个时区 - 因为当观察EST时,任何一个瞬间都会发生 观察到EDT时。谈论(比如说)&#34; 6月12日,美国东部时间上午10点&#34;是荒谬的(尽管我知道它发生了)因为EST在6月份没有生效。在人类对话中,不清楚扬声器实际是指UTC-5(不知道夏令时)还是UTC-4(不知道EST中S的含义)。< / p>

如果您有两个时区,这两个时区都是东方的变体,但它们有不同的过渡点,那么这只会有一些意义。在这种情况下,你真的应该谈谈在这两个时区之间进行转换。

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

如果你想用UTC-5的固定偏移来表示所有东西,你应该这样做 - 但不要声称它是它的EST。

答案 1 :(得分: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)")