确定[Ruby]中NOW(本地时间)和下一次DST更改之间的时间量

时间:2014-09-03 01:20:09

标签: ruby-on-rails ruby

在Ruby中,我们可以找到特定时区的当前时间,并确定它当前是否是该时区的DST。

pry(main)> t = Time.now.in_time_zone('America/Los_Angeles')
=> Tue, 02 Sep 2014 18:14:25 PDT -07:00
pry(main)> t.dst?
=> true

我希望找到tt.dst?下次更改时的时差。

有没有办法找出下一次DST更改的时间?

# pseudo code
dst_time = # Time when next DST occurs
local_time = Time.now.in_time_zone('America/Los_Angeles')
time_till_dst_change = dst_time - local_time

1 个答案:

答案 0 :(得分:4)

您可以从tzinfo gem获取此信息。它可以解析系统时区文件或使用tzinfo-data gem中的数据。

#!/usr/bin/env ruby

require 'tzinfo'

tz = TZInfo::Timezone.get('America/New_York')
puts "Next timezone change is at #{tz.current_period.end_transition.datetime}"

打印:

Next timezone change is at 2014-11-02T06:00:00+00:00