NSDate独立于时区?

Rog*_*Rog 8 iphone objective-c nsdate nstimezone ios

我有一个应用程序,显示某些渡轮旅行的时间表.

如果我前往不同的时区 - 比如说落后4个小时,那么上午10点的轮渡旅行现在显示为早上6点?

我知道这与如何根据时区处理日期有关,但我无法弄清楚如何改变这种行为.

目前,这是我如何获取日期并在UILabel上显示:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"HH:mm"];
[self.departureTime setText:[dateFormatter stringFromDate:[self.route objectForKey:@"departureTime"]]];
[self.arrivalTime setText:[dateFormatter stringFromDate:[self.route objectForKey:@"arrivalTime"]]];
[dateFormatter release];
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助.

bry*_*mac 7

您需要存储渡轮的时区,并为该时区格式化.

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"HH:mm"]; 

NSDate *now = [NSDate date];   
NSLog(@"now:%@", [dateFormatter stringFromDate:now]);

NSTimeZone *timeZone = [NSTimeZone timeZoneForSecondsFromGMT:(-8 * 3600)];     
[dateFormatter setTimeZone:timeZone];
NSLog(@"adjusted for timezone: %@", [dateFormatter stringFromDate:now]);
Run Code Online (Sandbox Code Playgroud)

输出:

2011-10-10 20:42:23.781 Craplet[2926:707] now:20:42
2011-10-10 20:42:23.782 Craplet[2926:707] adjusted for timezone: 16:42
Run Code Online (Sandbox Code Playgroud)