NSDate独立于时区? [英] NSDate independent of timezone?

查看:110
本文介绍了NSDate独立于时区?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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



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



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

目前,这是我如何获取日期并在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];

提前感谢您的帮助。

解决方案

您需要存储渡轮所在的时区并为该时区设置格式。

  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(@按时区调整:%@,[dateFormatter stringFromDate:now]);

输出:

  2011-10-10 20:42:23.781 Craplet [2926:707]现在:20:42 
2011-10-10 20:42:23.782 Craplet [2926:707]根据时区调整: 16:42


I have an app that displays a timetable of certain ferry trips.

If I travel to a different timezone - say 4 hours behind, a 10am ferry trip now shows up as 6am?

I know this has got to do with how dates are treated based on their timezones, but I can't work out how to change that behaviour.

At the moment here's how I am getting the date and displaying it on a 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];

Thanks in advance for your help.

解决方案

You'll need to store the timezone that the ferry ride is taking place in and format it for that timezone.

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]);

Outputs:

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

这篇关于NSDate独立于时区?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆