The easiest offline way to get NSTimeZone from CLLocation by folks from
Objective-C Ruby
Latest commit b09c081 Jan 14, 2015 @Krivoblotsky Krivoblotsky Merge pull request #8 from amolloy/LoadDatabaseFromBundle
Load the database file from the bundle for the APTimeZones class rather ...

An utility for iOS and OSX developers to simplify extracting NSTimeZone from a given CLLocation.

You can do the same job by calling Google API or Yahoo API but APTimeZones works locally, offline and with no limits inherented to hosted solutions.


//Ukraine location
CLLocation *location = [[CLLocation alloc] initWithLatitude:50.449846

NSTimeZone *timeZone = [[APTimeZones sharedInstance] timeZoneWithLocation:location];
NSLog(@"%@", timeZone);

You can use APTimeZones with Apple CLGeocoder as well to receive NSTimeZone for a given city string.

CLGeocoder *geocoder = [[CLGeocoder alloc] init];
[geocoder geocodeAddressString:@"New York" completionHandler:^(NSArray *placemarks, NSError *error) {
    if (placemarks.count) {
        CLPlacemark *placemark = placemarks[0];
        CLLocation *location = placemark.location;

        NSString *countryCode = placemark.addressDictionary[@"CountryCode"];
        NSTimeZone *timeZone = [[APTimeZones sharedInstance] timeZoneWithLocation:location
        NSLog(@"%@", timeZone);

Version 1.1:

We've added some handy categories with version 1.1 to make timezones magic even more easy.




CLLocation *location = ...
NSLog(@"%@", location.timeZone);

CLPlacemark *placemark = ...;
NSLog(@"%@", placemark.timeZone);

Also, we've added example project that shows APTimeZones usage [Demo Video on YouTube]:

APTimeZones requires ARC. alpha If you have improvements or concerns, feel free to post an issue and write details.

Check out all Alterplay's GitHub projects. Email us with other ideas and projects.