5

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

在我去重构我的核心数据模型之前,我想确保没有办法从存储的 NSDate 对象中派生在创建时处于活动状态的 NSTimeZone。有没有?如果没有,任何建议如何最好地自己在创建时捕获 NSTimeZone?一个 NSNumber 表示创建时间 NSTimeZone 与 GMT 的时间差?

谢谢。

4

1 回答 1

8

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

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

于 2011-01-18T08:21:47.970 回答