我在网络服务器上发送了一些请求,这些请求回复了我这样的时间和日期:
"at 18:58 of 05/08/2012"
我可以弄清楚如何在2个NSStrings(18:58,05 / 08/2012)中获取时间和日期。 请注意,服务器的时区是+00:00。我想要完成的是根据用户的位置显示这个时间。因此,例如,如果服务器的回复是2012年5月5日23:30,用户的时区是+2:00,我想在2012年8月6日1:30给他。 有什么想法吗?
答案 0 :(得分:10)
您应该按照以下方式进行:
1)首先,创建一个NSDateFormatter以获取从服务器发送的NSDate:
NSDateFormatter *serverFormatter = [[NSDateFormatter alloc] init];
[serverFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
[serverFormatter setDateFormat:@"'at 'HH:mm' of 'dd/MM/yyyy"];
从Apple docs:注意使用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];
答案 1 :(得分:0)
而不是从服务器获取绝对时间从服务器获取时间戳并将其转换为客户端的日期,为此您也不必更改时区。