Improved the way it manages Time Zones, and allows for passing in a Date
object to initialize the values (Preserves non-date fields).