关于ios:如何按纬度和经度获取时区

How to get timezone by latitude and longitude

本问题已经有最佳答案,请猛点这里访问。

我需要根据应用中给定的纬度/经度显示日期和时间。 我使用Google API来获取时区ID,但它也应该脱机工作。 有没有办法在没有连接到互联网的情况下获得时区?


试试这个:

1
2
3
4
5
CLLocation *location = [[CLLocation alloc] initWithLatitude:50.449846
                                                  longitude:30.523629];

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

在此查找库:https://github.com/Alterplay/APTimeZones

您也可以通过代码完成(通过https://stackoverflow.com/a/27054583/3202193回答):

1
2
3
4
5
6
7
8
9
10
11
12
13
CLLocation *currentLocaiton = [[CLLocation alloc] initWithLatitude:latitude longitude:longitude];

[geoCoder reverseGeocodeLocation:currentLocaiton completionHandler:^(NSArray *placemarks, NSError *error) {

    if (error == nil && [placemarks count] > 0) {

        placeMark = [placemarks lastObject];
         NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"identifier = "[a-z]*\\/[a-z]*_*[a-z]*"" options:NSRegularExpressionCaseInsensitive error:NULL];
        NSTextCheckingResult *newSearchString = [regex firstMatchInString:[placeMark description] options:0 range:NSMakeRange(0, [placeMark.description length])];
        NSString *substr = [placeMark.description substringWithRange:newSearchString.range];
        NSLog(@"timezone id %@",substr);

    }