NSDate в CoreData инкапсулирует часовой пояс? - PullRequest
5 голосов
/ 18 января 2011

Я храню даты и время в своем хранилище CoreData, и мне нужно точно представлять пользователям время, которое было введено изначально.Проблема в том, что если они вводят 4 часа на восточном побережье, то позже посмотрите на записанное время на западном побережье, оно отображается как 1:00, поскольку iPhone переводит универсальное время в местное время.Мне нужно, чтобы оно показывало 4:00 - возможно, 4:00 (+ 3:00).

Прежде чем я перейду и реструктурирую свою модель базовых данных, я хочу быть уверенным, что нет никакого способа извлечь активную NSTimeZoneво время создания из хранимого объекта NSDate.Есть?Если нет, какие рекомендации, как лучше всего захватить NSTimeZone во время создания себя?NSNumber, представляющий разницу во времени создания NSTimeZone от GMT?

Спасибо.

1 Ответ

8 голосов
/ 18 января 2011

Как вы обнаружили, NSDate представляет универсальный момент времени и не содержит конкретной информации о часовом поясе.

Я бы предложил вместо сохранения смещения сохранить свойство name NSTimeZone.Затем вы можете использовать +[NSTimeZone timeZoneWithName:], чтобы получить часовой пояс и затем преобразовать его в местное время.Это дает вам максимальную гибкость при отображении информации пользователю.

...