NSDateFormatter и строки с форматом часового пояса «+ HH: mm»

Обновление

Начиная с iOS 7, NSDateFormatter действительно создает NSDate при представлении строки в этом формате:

NSDateFormatter *formatter = [NSDateFormatter new];
[formatter setDateFormat:@"@"yyyy'-'MM'-'dd'T'HH':'mm':'ssZ""];

NSLog(@"non–nil date, even honoring the 7–minute–offset in the time–zone on iOS 7: %@",
     [formatter dateFromString:@"2011-07-12T18:07:31+02:07"]);

Для iOS 6 ответ состоит в том, чтобы не использовать NSDateFormatter…


Хорошо, до этого момента я прочитал

относительно того, как использовать NSDateFormatter для создания NSDate из строки.

Я также наткнулся на ISO8601DateFormatter Питера Хози.
Глядя на его реализацию, я задаюсь вопросом:

Нет ли способа, который был бы и правильным , и разумным, чтобы получить такую ​​строку, как эта 2011-07 -12T18: 07: 31 + 02: 00 в NSDate ?

  • Не было бы проблем, если бы последнее двоеточие было пропущено.
  • Не было бы проблем, если бы перед знаком «+» стояла префикс GMT , но ...
  • это не так.

Я могу взломать , чтобы он работал в моем приложении (используя формат @ "yyyy '-' MM '-' dd'T'HH ':' mm ':' ssz ': '00 "), но это - конечно - неверный , потому что он отбрасывает минутную информацию часового пояса.

Я также мог бы заменить последнее двоеточие пустой строкой, но я бы также подумал, что это взлом.

Итак, есть ли какой-нибудь секретный соус, чтобы заставить NSDateFormatter взять эту строку сверху и дать мне действительный и правильный NSDate ?


В сторону:

Я где-то нашел подсказку, что можно использовать + [NSDate dateWithNaturalLanguageString:] для достижения моей цели. Однако это устанавливает только дату, но не время! (Ну, это устанавливает время, но только с учетом смещения часового пояса, а не части ЧЧ: мм: сс ...)

6
задан danyowdee 2 April 2014 в 18:49
поделиться