如何将我的服务器时间转换为其他国家/地区?

时间:2016-07-19 05:52:13

标签: ios objective-c timezone nsdate

我从服务器获得的时间是2016/07/19--12:20:00 现在我必须根据国家改变这个时间。 例如,如果我在奥克兰,那么时间必须要2016/07/19--18:50:00 我在堆栈溢出中发现了很多解决方案,但我无法解决这个问题。 请帮帮我

 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setDateFormat:@"YYYY/MM/dd--HH:mm:ss"];
        NSDate* sourceDate = [dateFormatter dateFromString:model.tripEndTime];
        NSTimeZone* sourceTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
        NSTimeZone* destinationTimeZone = [NSTimeZone localTimeZone];
        NSInteger sourceGMTOffset = [sourceTimeZone secondsFromGMTForDate:sourceDate];
        NSInteger destinationGMTOffset = [destinationTimeZone secondsFromGMTForDate:sourceDate];
        NSTimeInterval interval = destinationGMTOffset - sourceGMTOffset;
        NSDate* destinationDate = [[NSDate alloc] initWithTimeInterval:interval sinceDate:sourceDate];
        NSDateFormatter* dateFormat = [[NSDateFormatter alloc] init];
        [dateFormat setTimeZone:[NSTimeZone systemTimeZone]];
        [dateFormat setDateFormat:@"YYYY/MM/dd--HH:mm:ss"];
        NSString* localTime = [dateFormat stringFromDate:destinationDate];
        NSLog(@"localTime:%@", localTime);

我尝试使用此代码

2 个答案:

答案 0 :(得分:2)

只需将服务器时间转换为UTC时间,然后转换为本地国家/地区时间。只需为此

编写一个单独的方法
 +(NSString*)convertLocaleTimeToChatTimeStampWithDateStr:(NSString  *)strDate
{
NSDateFormatter *df = [DateHelper getDefaultTimeFormatter];
[df setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];
[df setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
NSDate *date = [df dateFromString:strDate];
[df setDateFormat:@"dd MMM, hh:mm a"];
[df setTimeZone:[NSTimeZone localTimeZone]];
return [df stringFromDate:date];
}

+(NSDateFormatter*)getDefaultTimeFormatter
{
NSDateFormatter *df = [NSDateFormatter new];
[df setDateStyle:NSDateFormatterNoStyle];
[df setTimeStyle:NSDateFormatterShortStyle];
return df;
}

希望这能解决您的问题。感谢

答案 1 :(得分:0)

最好使用服务器时间戳。获取时间戳后,根据时区将其转换