Picking up an old thread (http://rubyforge.org/pipermail/tzinfo-users/2007-October/000021.html, apologies for not setting in-reply-to properly), I had an idea for finding equivalent time zones. I was all ready to go off and implement it, but now that tzinfo-data is separate there are more moving parts so I figured I'd ask first to see if this has a chance of being accepted upstream.

My goal is to end up with class method on TZInfo::Timezone something like this:

def self.map_equal_zones(zones,since)
end

The return value of this method is a hash with a key for each zone in the input zones array. The value is the primary/master/base zone. Still fishing for the right name there.

The idea is that if you pass TZInfo::Timezone::us_zones and a fairly recent date, you only get one of these zones as a value.

[#<TZInfo::CountryTimezone: America/New_York>,
 #<TZInfo::CountryTimezone: America/Chicago>,
 #<TZInfo::CountryTimezone: America/Denver>,
 #<TZInfo::CountryTimezone: America/Phoenix>,
 #<TZInfo::CountryTimezone: America/Los_Angeles>,
 #<TZInfo::CountryTimezone: America/Anchorage>,
 #<TZInfo::CountryTimezone: America/Adak>,
 #<TZInfo::CountryTimezone: America/Metlakatla>,
 #<TZInfo::CountryTimezone: Pacific/Honolulu>]

My idea for how to do this is to include observance information from data files in DataTimezoneInfo, and then compare observances from the given start date (since) to figure out what's equal to what. It seems fairly straightforward to include observance info in tzinfo-data/lib/definitions by adjusting TZDataZone to write @observances. From there, it seems similarly straightforward to adjust DataTimezoneInfo to provide access to the info. No need to parse the rules that the observances reference as far as I can tell.

The decision of what the primary zone is for a given set of equal zones would come from the order of the given zones, which with the return value from TZInfo::Timezone::us_zones appears to be based on the order in the original data files, which is just right for me.

Thoughts?

-DB
_______________________________________________
TZInfo-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/tzinfo-users

Reply via email to