将字符串时区转换为NSTimeZone

时间:2015-01-20 16:52:41

标签: objective-c nsdate

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

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]];

但我不确定该怎么做。

有没有办法处理这个问题?

非常感谢

1 个答案:

答案 0 :(得分:3)

因此,您有三个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];

dateFormat的{​​{1}}自然取决于NSDateFormatterdate的格式。

还要记住缓存time,否则你会遇到性能问题。