CoreData中的NSDate是否封装了时区?

ed9*_*133 5 core-data objective-c nsdate nstimezone ios

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

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

谢谢.

gra*_*rks 8

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

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