Неужели NSDATE в Coredata инкапсулируют часовой пояс?
-
12-10-2019 - |
Вопрос
Я держу даты и время в своем магазине Coredata, и мне нужно точно представить пользователям время, как изначально введено. Проблема в том, что если они вошли в 4:00 на восточном побережье, то потом посмотрите на записанное время на Западном побережье, он появляется как 1:00, поскольку iPhone переводит универсальные времена в местные времена. Мне нужно показать 4:00 - вероятно, 4:00 (+3H00).
Прежде чем я уйду и реструктурирую свою основную модель данных, я хочу быть уверенным, что нет способа вывести NSTIMEZONE, который был активным во время создания из сохраненного объекта NSDATE. Здесь? Если нет, есть какие -либо рекомендации, как лучше всего запечатлеть Nstimezone во время создания? NSNumber, представляющая разницу во времени времени создания NSTIMEZONE от GMT?
Спасибо.
Решение
Как вы обнаружили, NSDATE представляет универсальный момент времени и не включает конкретную информацию о часовом поясе.
Я бы посоветовал вместо хранения смещения, хранить Nstimezone name
имущество. Тогда вы можете использовать +[NSTimeZone timeZoneWithName:]
Чтобы получить часовой пояс и оттуда конвертировать его в местное время. Это дает вам максимальную гибкость в том, как вы отображаете информацию пользователю.