在核心数据封装时区做NSData吗?

时间:2011-01-18 08:06:52

标签: objective-c ios core-data nsdate nstimezone

我在CoreData商店中保留日期和时间,并且需要准确地向用户显示最初输入的时间。问题是,如果他们进入东海岸的4点,然后再看看西海岸记录的时间,则显示为1点,因为iPhone将通用时间转换为当地时间。我需要它显示4:00 - 可能是4:00(+ 3h00)。

在我重新构建我的Core Data模型之前,我想确保无法从存储的NSDate对象派生在创建时活动的NSTimeZone。在那儿?如果没有,任何建议如何在创建时自己捕获NSTimeZone? NSNumber表示与GMT的创建时间NSTimeZone时差?

感谢。

1 个答案:

答案 0 :(得分:8)

正如您所发现的,NSDate代表了一个通用的时间点,并不包含特定的时区信息。

我建议不要存储偏移量,而是存储NSTimeZone的name属性。然后,您可以使用+[NSTimeZone timeZoneWithName:]获取时区,然后将其转换为当地时间。这为您向用户显示信息提供了最大的灵活性。