Начиная с 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:]
для достижения моей цели. Однако это устанавливает только дату, но не время! (Ну, это устанавливает время, но только с учетом смещения часового пояса, а не части ЧЧ: мм: сс ...)