ruby-on-rails - 你如何在 Ruby(没有 Rails)中将以下时间从 UTC 转换为 EST?

标签 ruby-on-rails ruby time

我试图在纯 Ruby 中将 UTC 时间“2018-04-02T14:30:00Z”转换为 EST。我注意到以下差异。如果我使用 Rails 解析 UTC 时间,然后添加 EST zone_offset,我得到的时间与使用“in_time_zone”助手的时间不同。 9:30 与 10:30。

2.2.4 :001 > t = Time.parse "2018-04-02T14:30:00Z"
 => 2018-04-02 14:30:00 UTC 
2.2.4 :002 > t + Time.zone_offset("EST")
 => 2018-04-02 09:30:00 UTC 
2.2.4 :003 > t.in_time_zone('Eastern Time (US & Canada)')
 => Mon, 02 Apr 2018 10:30:00 EDT -04:00 

最佳答案

Rails 可以很好地处理时区,如果不使用它,您将很难复制 ActiveSupport::TimeWithZone#in_time_zone 的结果。

例如,正如您所指出的:

>> t = Time.parse "2018-04-02T14:30:00Z"
>> t.in_time_zone('Eastern Time (US & Canada)')
Mon, 02 Apr 2018 10:30:00 EDT -04:00

但考虑到您同样可以这样做:

>> t = Time.parse "2018-01-02T14:30:00Z"
>> t.in_time_zone('Eastern Time (US & Canada)')
Tue, 02 Jan 2018 09:30:00 EST -05:00

换句话说,ActiveSupport 不仅可以处理您的时区,还可以处理您的标准/夏令时挑战,所有这些都是免费的。甚至 moment.js 都不会这样做(或者如果会,我还没弄清楚怎么做)。

您是否考虑过使用 require 'active_support',它可以在不使用所有 Rails 的情况下为您提供此功能?

关于ruby-on-rails - 你如何在 Ruby(没有 Rails)中将以下时间从 UTC 转换为 EST?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49561529/

相关文章:

php - 如何在 php 中获取准确的 IST 时间?

javascript - 出现直到关闭一次的 jQuery 欢迎消息 (Rails 3)

ruby-on-rails - ruby on Rails 3.1 : Am I setting this relationship up correctly?

ruby-on-rails - 如何在 Heroku 上的 Rails 控制台内切换数据库?

ruby - ActiveRecord Associations(has_one) - 访问父对象

java - 查找用户输入的当前日期和时间之间的差异

ruby-on-rails - 一个github仓库的star数有什么意义?

javascript - Rails 5 不渲染 JQuery 结果

ruby-on-rails - 如何从过时的 TZInfo 标识符中获取 Rails TimeZone 名称?

c - 如何同步两个不同进程之间的时间?