iPhone: преобразование отметки времени Oracle в NSDate или в отметку времени Unix (например, двойная) - PullRequest
3 голосов
/ 24 февраля 2010

Есть ли хороший + простой способ конвертировать отметку времени Oracle в объект NSDate на iPhone? Я попросил своего клиента предоставить мне БД с временными метками как Unix Timestamp (удваивается с 0 = начало 1970 года), но, похоже, это проблема для них. Спасибо.

Примечание: Вы можете легко преобразовать метку времени Unix в NSDate с помощью

[NSDate dateWithTimeIntervalSince1970: timestamp]  // timestamp is a "double"

Что мне нужно сделать, так это преобразовать временную метку Oracle в двойную временную метку Unix. Остальное легко.

Дополнительная информация: мне нужен код Objective C для запуска на iPhone с использованием NSStrings, которые представляют даты в формате Oracle Timestamp. Другой поток StackOverflow предлагает использовать NSDateFormatter, но я не знаю, какой формат использовать, и метод инициализации форматера, предложенный в этом потоке, генерирует для меня предупреждение.

Ответы [ 3 ]

2 голосов
/ 24 февраля 2010

Похоже, лучше всего использовать следующее:

NSDateFormatter* formatter = [[NSDateFormatter alloc] init];    
[formatter setDateFormat:@"MM/dd/yyyy HH:mm a"];

Я не уверен, насколько сильно различаются временные метки Oracle, поэтому, если есть проблема с вышеуказанным подходом, я бы хотел знать

Спасибо за другие ответы. Я оставлю вопрос открытым, чтобы пригласить другие подходы.

2 голосов
/ 04 февраля 2011

Жаль, что вы уже приняли этот ответ, но это лучший способ сделать это:

NSDate *dateTraded = [NSDate dateWithTimeIntervalSince1970 :[timestampVal integerValue]];

... где timestampVal - это объект NSString, представляющий значение метки времени.

2 голосов
/ 24 февраля 2010

Я не уверен насчет преобразования в NSDate, но вы можете легко конвертировать дату Oracle в метку времени Unix. Следующий фрагмент кода SQL сделает это:

(my_date - to_date('01/01/1970','DD/MM/YYYY')) * 86400
...