Хорошо, я не уверен, как задать этот вопрос, чтобы его можно было понять ...
Мне нужно хранить некоторые расписания на сервере (Ruby on Rails) с iPhone.На устройстве iPhone время соответствует настройкам часового пояса устройства, но на сервере мне нужно правильно хранить данные в локальном часовом поясе серверов, чтобы запланированное событие было запущено в нужное время.
MyИдея заключалась в следующем: - Преобразование времени iPhone в часовой пояс UTC и отправка на сервер. - На сервере считайте все сохраненные временные метки как часовой пояс UTC. - Для данных, полученных с сервера, конвертируйте время из часового пояса UTC в местное время часового пояса
.Вот мой код для преобразования во время UTC:
// First the NSDateformatter
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSLocale *enUSPOSIXLocale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease];
[dateFormatter setLocale:enUSPOSIXLocale];
[dateFormatter setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
// Now the conversion from local timezone to UTC
NSTimeZone *srcTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"UTC"];
NSTimeZone *destTimeZone = [NSTimeZone systemTimeZone];
NSInteger sourceGMTOffset = [srcTimeZone secondsFromGMTForDate:srcDate];
NSInteger destinationGMTOffset = [destTimeZone secondsFromGMTForDate:srcDate];
NSTimeInterval interval = destinationGMTOffset - sourceGMTOffset;
NSDate *destDate = [[[NSDate alloc] initWithTimeInterval:interval sinceDate:srcDate] autorelease];
Проблема в том, что если я попытаюсь изменить часовой пояс на моем iPhone между двумя сообщениями на сервер, будет разница во времени, поэтому что-тонеправильно.
Итак, мой вопрос (ы): 1) Это хороший подход?2) Что не так с моим кодом?
Спасибо, Сёрен