Ruby/Time/Time Zones
Материал из Wiki.crossplatform.ru
Converting Between Time Zones
puts now = Time.now # => Sat Mar 18 20:15:58 EST 2006 puts now = now.gmtime # => Sun Mar 19 01:15:58 UTC 2006 puts now = now.localtime # => Sat Mar 18 20:15:58 EST 2006
Convert time to time zone
class Time def convert_zone(to_zone) original_zone = ENV["TZ"] utc_time = dup.gmtime ENV["TZ"] = to_zone to_zone_time = utc_time.localtime ENV["TZ"] = original_zone return to_zone_time end end convert_zone("US/Pacific") t = Time.at(1000000000) # => Sat Sep 08 21:46:40 EDT 2001 t.convert_zone("US/Pacific") # => Sat Sep 08 18:46:40 PDT 2001 convert_zone("US/Alaska") t = Time.at(1000000000) # => Sat Sep 08 21:46:40 EDT 2001 t.convert_zone("US/Alaska") # => Sat Sep 08 17:46:40 AKDT 2001 convert_zone("UTC") t = Time.at(1000000000) # => Sat Sep 08 21:46:40 EDT 2001 t.convert_zone("UTC") # => Sun Sep 09 01:46:40 UTC 2001 convert_zone("Turkey") t = Time.at(1000000000) # => Sat Sep 08 21:46:40 EDT 2001 t.convert_zone("Turkey") # => Sun Sep 09 04:46:40 EEST 2001 convert_zone("Asia/Calcutta") t = Time.at(1000000000) # => Sat Sep 08 21:46:40 EDT 2001 t.convert_zone("Asia/Calcutta") # => Sun Sep 09 07:16:40 IST 2001 ENV["TZ"] = "Africa/Lagos" ENV["TZ"] = "Africa/Lagos" t = Time.at(1000000000) # => Sun Sep 09 02:46:40 WAT 2001 ENV["TZ"] = nil puts t.convert_zone("Singapore") # => Sun Sep 09 09:46:40 SGT 2001 puts t.convert_zone("US/Eastern") # => Sat Sep 08 21:46:40 EDT 2001