Я попробовал эксперимент, потому что мне нужно иметь возможность генерировать метку времени Unix (с 1970 года) в приложении, над которым я работаю.
NSLog(@"Getting timeIntervalSince1970");
double theLoggedInTokenTimestampDateEpochSeconds = [[NSDate date] timeIntervalSince1970];
Этот должен был возвращать эпохальные секунды (с 1970 г.) по Гринвичу (секунды с 1 января 1970 г.).Однако при проведении эксперимента в понедельник, 15 августа, 09:54:30, он вернул 1313427270.504315
При тестировании с помощью простого однострочного perl на моем терминале Mac OS я получаю: perl -e 'print scalar(localtime(1313427270))'
, который возвращает Пн. 15 августа 09:54:30 2011 ...
Очевидно, что это не время по Гринвичу, когда я нахожусь в районе залива SF, и мой местный часовой пояс установлен на "Купертино".Что происходит и как мне это исправить, пожалуйста?Мне нужно, чтобы мое приложение отправляло время UTC на сервер, когда оно обменивается данными, поэтому, где бы ни находился пользователь, отметка времени будет отправлена в одном равном действительном часовом поясе.
В другой части моего приложения, когда пользователь запрашиваетданные с сервера отправляются в UTC - преобразование для отображения следующим образом:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setLocale:[NSLocale currentLocale]];
[dateFormatter setTimeZone:nil];
[dateFormatter setDateFormat:@"yyyyMMdd"];
NSDate *conversationDate = [NSDate dateWithTimeIntervalSince1970:[theConversationTimeStampString intValue]];
NSString *conversationDateString = [dateFormatter stringFromDate:conversationDate];
[dateFormatter release];
, и это прекрасно работает - отображение скорректированного времени в часовом поясе и локали пользователя ... такЯ знаю, что это делается для входящих меток времени.Итак, что я делаю не так с первой функцией (timeIntervalSince190), которая не позволяет ей быть в GMT?
Thx