在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
我希望找到t
与t.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
答案 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