将字符串时区转换为 NSTimeZone

Convert a string timezone to NSTimeZone

我在传入的字符串中有一个这样格式化的时区,我无法控制(它来自服务器的字典)

tzHours = NSString * @"+01:00"

但我需要将其转换为 NSTimeZone 以便我可以格式化日期

NSString *date = [dateDictionary safeObjectForKey:@"date"];
    NSString *time = [dateDictionary safeObjectForKey:@"time"];
    NSString *tzHours = [dateDictionary safeObjectForKey:@"timeZone"];

// Format the date based off the timezone
NSDateFormatter *formatter = [self _apiDateFormatterWithTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];

但我不确定该怎么做。

有什么好的方法来处理这个问题吗?

非常感谢

假设您有三个 NSStringdatetimetzHours。你可以这样做:

NSString *date = @"2015-01-01";
NSString *time = @"14:00:01";
NSString *tzHours = @"+01:00";

NSString *dateString = [NSString stringWithFormat:@"%@ %@ %@", date, time, tzHours];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm:ss ZZZZZ";
dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];

NSDate *dateObject = [dateFormatter dateFromString:dateString];

NSDateFormatterdateFormat自然要看datetime的格式了。

还要记得缓存 NSDateFormatter 否则你会在性能方面受到影响。