2017-04-22 27 views
1

確定過去的日期是否屬於DST範圍在Ruby ruby​​ 2.4 there was a changeDateTime#to_time方法的工作方式。這些更改打破了我現有的一些代碼,用於檢查給定過去的日期時間是否在DST中使用ruby 2.4

以下日期位於DST range for that year中。但是,紅寶石正在報告dst? == false。我非常難過:沒有使用rails我怎麼測試過去日期時間的dst?值?

# 2016-07-27 00:00:00 
unix_timestamp = 1469577600 
time = Time.at(unix_timestamp).utc 
pacific_time = Time.new(time.year, time.month, time.day, 0, 0, 0, "-08:00") 
=> 2016-07-27 00:00:00 -0800 
pacific_time.dst? 
=> false 
pacific_time.zone 
=> nil 

回答

0

如果您的本地時區爲太平洋時間,然後讓時間假定它:

irb(main):001:0> unix_timestamp = 1469577600 
=> 1469577600 
time = Time.at(unix_timestamp).utc 
irb(main):004:0> pacific_time = Time.local(time.year, time.month, time.day) 
=> 2016-07-27 00:00:00 -0700 
irb(main):006:0> pacific_time.dst? 
=> true 
irb(main):007:0> pacific_time.zone 
=> "PDT" 

你也可以得到你的UTC時間的本地版本:

irb(main):015:0> time_local = time.getlocal 
=> 2016-07-26 17:00:00 -0700 
irb(main):016:0> time_local.dst? 
=> true 
irb(main):017:0> time_local.zone 
=> "PDT" 

但是,它可能會稍微脆弱一些,而不會實際指定它,而取決於當地的時區。如果您需要在另一個時區顯示時間,與UTC不同,並且與本地時間不同,那麼可能需要Rails' in_time_zonerelated question

+0

感謝您的迴應!這裏的問題是我需要計算過去的日期時間是否在DST中,並且日期時間的時區可能是也可能不在機器的本地時區。有沒有一種方法可以計算當時區與機器上的本地時區不同時,過去的日期時間是否在DST中? – iloveitaly

相關問題