Как преобразовать время в часовой пояс устройства iPhone?

У меня есть время в часовом поясе EST, это делается с помощью функции NOW () на сервере mysql. Поскольку мой сервер находится в EST, время хранится в EST. Когда я извлекаю его из своего приложения на iPhone, мне нужно отобразить его в правильном часовом поясе пользователя. Как мне это сделать?

Я думаю, это зависит от того, что вы подразумеваете под EST – если вы имеете в виду Восточное побережье США, то в общем, это на 5 часов меньше UTC (но не учитывает летнее время), что должно дать вам 04:00 EST. Старайтесь избегать использования сокращений, где это возможно, поскольку они неоднозначны, например, EST является аббревиатурой как для Америки / Детройта, так и для Австралии / Сиднея. Использование NSTimeZone initWithName даст более точные результаты.

Хранилище часовых поясов Chronos предоставляет хорошо читаемую базу данных часовых поясов XML, которая действительно помогает понять, как работают часовые пояса (все это довольно грязно и сменно).

// Вы можете использовать приведенную ниже функцию для преобразования даты в часовой пояс, который вы хотите

+ (NSDate *) convertDate:(NSDate *) date toTimeZone:(NSString *) timeZoneAbbreviation { NSTimeZone *systemZone = [NSTimeZone systemTimeZone]; NSTimeZone *zoneUTC = [NSTimeZone timeZoneWithAbbreviation:timeZoneAbbreviation]; NSTimeInterval s = [zoneUTC secondsFromGMT]; NSTimeZone *myZone = [NSTimeZone timeZoneWithAbbreviation:[systemZone abbreviationForDate:date]]; NSTimeInterval p = [myZone secondsFromGMT]; NSTimeInterval i = sp; NSDate *d = [NSDate dateWithTimeInterval:i sinceDate:date]; return d; } //Test case **note** cgUtil is the class this method is written thus change it accordingly __block NSDate *now = [NSDate date]; NSLog(@"Current time:%@", now); [[[NSTimeZone abbreviationDictionary] allKeys] enumerateObjectsUsingBlock:^(NSString * abb, NSUInteger idx, BOOL *stop) { NSLog(@"Time zone abb:%@:Time:%@",abb,[cgUtil convertDate:now toTimeZone:abb]); }]; 
  • Как получить смещение часовой пояс в GMT (как GMT + 7: 00) с устройства Android?
  • Как использовать TimeZoneInfo для получения местного времени во время летнего времени?
  • Разница между UTC и стандартным временем GMT в .NET.
  • Получение даты с на несколько часов
  • Установите системный часовой пояс из .NET.
  • Как получить часовой пояс из местоположения с использованием координат широты и долготы?
  • Всегда ли полезно хранить время в UTC или это тот случай, когда лучше хранить в местное время?
  • Как обрабатывать календарные часовые пояса с помощью Java?
  • Получить имя часового пояса
  • Как конвертировать дату с одного часового пояса в другой часовой пояс
  • Сокращения временной зоны
  • Давайте будем гением компьютера.