iOS – 将时间和date转换为用户时区

我发送一些Web服务器上的一些请求,回复我的时间和date是这样的:

"at 18:58 of 05/08/2012" 

我可以弄清楚如何在2个NSString(18:58,05/08/2012)中获取时间和date。 请注意,服务器的时区是+00:00。 我想要完成的是根据用户的位置呈现这个时间。 因此,例如,如果服务器的回复是2012年5月8日23:30,用户的时区是+2:00,我想在2012年6月8日1:30提供给他。 有任何想法吗?

你应该这样做:

1)首先,创build一个NSDateFormatter以获取从服务器发送的NSDate:

 NSDateFormatter *serverFormatter = [[NSDateFormatter alloc] init]; [serverFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]]; [serverFormatter setDateFormat:@"'at 'HH:mm' of 'dd/MM/yyyy"]; 

从Apple文档 : 请注意Unicode格式的string格式,您应该在格式string之间用撇号('')括起文本文本。

2)将string(认为它被定义为theString )转换为一个NSDate

 NSDate *theDate = [serverFormatter dateFromString:theString]; 

3)创build一个NSDateFormattertheDate转换为用户:

 NSDateFormatter *userFormatter = [[NSDateFormatter alloc] init]; [userFormatter setDateFormat:@"HH:mm dd/MM/yyyy"]; [userFormatter setTimeZone:[NSTimeZone localTimeZone]]; 

3)从userFormatter获取string:

 NSString *dateConverted = [userFormatter stringFromDate:theDate]; 

而不是从服务器获取绝对时间从服务器获取时间戳,并将其转换为在客户端的date,为此,您不必更改时区。