类似 Ruby 内置的 Time,但 Ruby 内置的 Time 所创建的实例对象局限于 UTC 和系统的 ENV['TZ'] 时区。这里的实例没有此局限,你可以用你想用的时区。
你不能直接使用 new 创建 TimeWithZone 实例对象,但可以用 local, parse, at 和 now 创建 TimeZone 实例对象,或者 in_time_zone 创建 Time 和 DateTime 实例对象。
Time.zone ='Eastern Time (US & Canada)'# => 'Eastern Time (US & Canada)'Time.zone.local(2007,2,10,15,30,45)# => Sat, 10 Feb 2007 15:30:45 EST -05:00Time.zone.parse('2007-02-10 15:30:45')# => Sat, 10 Feb 2007 15:30:45 EST -05:00Time.zone.at(1170361845)# => Sat, 10 Feb 2007 15:30:45 EST -05:00Time.zone.now# => Sun, 18 May 2008 13:07:55 EDT -04:00Time.utc(2007,2,10,20,30,45).in_time_zone# => Sat, 10 Feb 2007 15:30:45 EST -05:00
查询 Time 和 TimeZone 的 API 可以对这些方法有更多的了解。
TimeWithZone 创建的实例对象和 Ruby 内置的 Time 创建的实例对象完全兼容,也就是说它们是等价关系。