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