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一个NSDateFormatter
将theDate
转换为用户:
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,为此,您不必更改时区。