This page contains automated test results for code from O'Reilly's Ruby Cookbook. If this code looks interesting or useful, you might want to buy the whole book.
Converting Between Time Zones | ||
---|---|---|
Code | Expected | Actual |
now = Time.now |
Sat Mar 18 20:15:58 EST 2006 | Mon Mar 27 16:43:32 EST 2006 |
now = now.gmtime |
Sun Mar 19 01:15:58 UTC 2006 | Mon Mar 27 21:43:32 UTC 2006 |
now = now.localtime |
Sat Mar 18 20:15:58 EST 2006 | Mon Mar 27 16:43:32 EST 2006 |
require 'date' local = DateTime.now local.to_s |
"2006-03-18T20:15:58-0500" | "2006-03-27T16:43:32-0500" |
utc = local.new_offset(0) utc.to_s |
"2006-03-19T01:15:58Z" | "2006-03-27T21:43:32Z" |
local = DateTime.now utc = local.new_offset local.offset |
Rational(-5, 24) | Rational(-5, 24) |
local_from_utc = utc.new_offset(local.offset) local_from_utc.to_s |
"2006-03-18T20:15:58-0500" | "2006-03-27T16:43:32-0500" |
local == local_from_utc |
true | true |
#Convert local (Eastern) time to Pacific time eastern = DateTime.now eastern.to_s |
"2006-03-18T20:15:58-0500" | "2006-03-27T16:43:32-0500" |
pacific_offset = Rational(-7, 24) pacific = eastern.new_offset(pacific_offset) pacific.to_s |
"2006-03-18T18:15:58-0700" | "2006-03-27T14:43:32-0700" |
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 t = Time.at(1000000000) |
Sat Sep 08 21:46:40 EDT 2001 | Sat Sep 08 21:46:40 EDT 2001 |
t.convert_zone("US/Pacific") |
Sat Sep 08 18:46:40 PDT 2001 | Sat Sep 08 18:46:40 PDT 2001 |
t.convert_zone("US/Alaska") |
Sat Sep 08 17:46:40 AKDT 2001 | Sat Sep 08 17:46:40 AKDT 2001 |
t.convert_zone("UTC") |
Sun Sep 09 01:46:40 UTC 2001 | Sun Sep 09 01:46:40 UTC 2001 |
t.convert_zone("Turkey") |
Sun Sep 09 04:46:40 EEST 2001 | Sun Sep 09 04:46:40 EEST 2001 |
t.convert_zone("Asia/Calcutta") |
Sun Sep 09 07:16:40 IST 2001 | Sun Sep 09 07:16:40 IST 2001 |
ENV["TZ"] = "Africa/Lagos" t = Time.at(1000000000) |
Sun Sep 09 02:46:40 WAT 2001 | Sun Sep 09 02:46:40 WAT 2001 |
ENV["TZ"] = nil t.convert_zone("Singapore") |
Sun Sep 09 09:46:40 SGT 2001 | Sun Sep 09 09:46:40 SGT 2001 |
t.convert_zone("US/Eastern") |
Sat Sep 08 21:46:40 EDT 2001 | Sat Sep 08 21:46:40 EDT 2001 |