【发布时间】:2016-08-10 17:48:39
【问题描述】:
我从服务器获取以下日期为string。
"Fri, 09 Sep 2016 16:50:40 GMT"
我希望将其转换为我的本地 timezone,并且我有这个方法可以做到这一点:
-(NSString *)convertDatetoLocalTimeZone:(NSString *)dateString {
NSDateFormatter *serverFormatter = [[NSDateFormatter alloc] init];
[serverFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
[serverFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss zzz"];
NSDate *expDate = [serverFormatter dateFromString:dateString];
NSDateFormatter *userFormatter = [[NSDateFormatter alloc] init];
[userFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss zzz"];
[userFormatter setTimeZone:[NSTimeZone systemTimeZone]];
return [userFormatter stringFromDate:expDate];
}
现在转换后的日期是:
"Fri, 09 Sep 2016 12:50:40 EDT"
由于这是一个字符串,我想将其转换为NSDate(当然时区相同)。我希望转换后的NSDate 将显示EDT 时区。
这是我必须将字符串转换回NSDate:
-(NSDate *)getDateFromString:(NSString*)dateString{
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss zzz"];
[df setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"EDT"]]; //I also tried [NSTimeZone systemTimeZone]
return [df dateFromString:dateString];
}
返回的日期是:
2016-09-09 16:50:40 +0000 //this is in UTC
我也尝试将语言环境设置为en_US
我的问题是为什么日期格式化程序将EDT 转换为UTC,即使我将时区设置为EDT?
【问题讨论】:
标签: ios9 nsdate nsdateformatter