TZInfo enables transformation of times between different time zones, taking into account daylight savings.
For example, if you wish to convert a time in Coordinated Universal Time (UTC) to a local time in the America/New_York timezone, you can do so effortlessly with the following code after installing TZInfo:
```
require 'tzinfo'
tz = TZInfo::Timezone.get('America/New_York')
local = tz.utc_to_local(Time.utc(2005,8,29,15,35,0))
```
Please note that the time returned will look like it is in UTC as it is not possible to alter the offset of an individual Time instance at the moment.
Ruby, the programming language that TZInfo is written in, is a revolutionary, object-oriented programming language with dynamic, reflective, and general-purpose features. It was designed and developed by Yukihiro "Matz" Matsumoto in the mid-1990s, and it originated in Japan. Ruby supports multiple programming paradigms, such as object-oriented, functional, and imperative, and it features a dynamic type system and automatic memory management.
Because there is currently no specification of the Ruby language, its current, official implementation in C is considered the de facto reference, and other alternative implementations have emerged, such as Rubinius, JRuby, YARV, and IronRuby, each with a different approach. JRuby, for instance, provides just-in-time compilation functionality. Besides, many virtual machines are being developed for Ruby, such as JRuby, a Java port of Ruby, IronRuby, a .NET Framework implementation from Microsoft, and Rubinius, an interpreter modeled after self-hosting Smalltalk virtual machines.
TZInfo requires Ruby to function, and it supports loading timezone data in the latest Ruby 1.9 trunk versions while preventing warnings from being output while running Ruby with the -v or -w command-line options. The most recent stable version of the reference implementation, as of December 2007, is 1.8.6, and TZInfo has been updated to support tzdata version 2008c. Rational.new! is now private in the latest release, so you must call it using Rational.send :new! instead.
Version 0.3.9: N/A