我正在网络服务器上发送一些请求,这些请求会回复我的时间和日期,如下所示:
"at 18:58 of 05/08/2012"
我可以弄清楚如何在 2 个 NSStrings(18:58, 05/08/2012) 中获取时间和日期。请注意,服务器的时区是 +00:00。我想要完成的是根据用户的位置来呈现这个时间。例如,如果服务器的回复是 2012 年 5 月 8 日的 23:30,而用户的时区是 +2:00,我想在 2012 年 6 月 8 日的 1:30 向他展示。有任何想法吗?
你应该这样做:
1)首先,创建一个NSDateFormatter来获取服务器发送的NSDate:
NSDateFormatter *serverFormatter = [[NSDateFormatter alloc] init];
[serverFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
[serverFormatter setDateFormat:@"'at 'HH:mm' of 'dd/MM/yyyy"];
来自Apple 文档:注意 Unicode 格式字符串格式,您应该将文本文本括在撇号 ('') 之间的格式字符串中。
2)将字符串(考虑它定义为theString
)转换为NSDate
:
NSDate *theDate = [serverFormatter dateFromString:theString];
3)创建一个NSDateFormatter
转换theDate
为用户:
NSDateFormatter *userFormatter = [[NSDateFormatter alloc] init];
[userFormatter setDateFormat:@"HH:mm dd/MM/yyyy"];
[userFormatter setTimeZone:[NSTimeZone localTimeZone]];
3) 从 userFormatter 获取字符串:
NSString *dateConverted = [userFormatter stringFromDate:theDate];
而不是从服务器获取绝对时间从服务器获取时间戳并在客户端将其转换为日期,为此您也不必更改时区。