Как правильно проанализировать дату ISO8601 в какао? - PullRequest
7 голосов
/ 01 июня 2011

Я бы хотел разобрать даты ISO8601 в Какао, как для iOS 4+, так и для OSX 10.6 +

В StackOverflow уже есть несколько вопросов по этому поводу, но, на мой взгляд, нет из них не содержат хороших ответов. Вот что я считаю хорошим ответом:

  1. Ответ должен указывать на код с поддержкой ISO8601. Этот код должен быть аккуратно скомпилирован под XCode 4 для iOS 4+ и OSX 10.6 +.

  2. Код должен поддерживать все возможные форматы даты ISO8601.

    Обратите внимание, что здесь есть много возможностей. Простой ответ одной или двумя строками формата для NSDateFormatter не приведет к сокращению.

  3. Ответ должен не быть этой библиотекой . Это потому, что он пронизан опасными 32-битными допущениями, он намного сложнее, чем необходимо, и он не компилируется чисто с XCode4 / Clang. Итог: я совсем не доверяю!

Спасибо, товарищи по какао. Я взволнован, чтобы узнать, есть ли здесь реальный ответ!

1 Ответ

6 голосов
/ 01 июня 2011

Лучший способ - это эта библиотека .100

Я должен добавить ссылку на этой странице в Репозиторий Bitbucket , который содержит более новый исходный код (включая 32-битные исправления и исправления Clang!) И имеет систему отслеживания ошибок.Если вы обнаружите в нем какие-либо другие ошибки, пожалуйста, отправьте их.

Я также хотел бы знать, что вы подразумеваете под «сложнее, чем необходимо».Обычное использование очень просто:

ISO8601DateFormatter *formatter = [[[ISO8601DateFormatter alloc] init] autorelease]; //Or, if you prefer, create it once in -init and own it until -dealloc 
NSDate *parsedDate = [formatter dateFromString:inString];
NSString *unparsedString = [formatter stringFromDate:inDate];

Вы можете отключить dateFromString: или stringFromDate: для одного из более длинных методов, если вам нужна дополнительная информация (например, для сохранения часового пояса).

Если вы имеете в виду что-то еще, я хочу услышать это, чтобы улучшить библиотеку.

...