Получить дату из строки '2011-08-16T19: 03: 21.000Z' - PullRequest
8 голосов
/ 16 августа 2011

Я спрашиваю в базе данных дату объекта. Я получаю строку как таковую: 2011-08-16T19:03:21.000Z (Вот еще одна: 2011-08-12T02:13:16.000Z);

Редактировать: Вот еще один, который я сделал 16 августа 2011 года в 12:51 для целей тестирования: 2011-08-16T19:51:24.000Z

Я хочу преобразовать эту дату в другой формат для отображения. Этот формат может измениться в будущем, поэтому я не хочу делать прямые манипуляции со строками. Лучше всего превратить его в NSDate, а затем вернуться к правильно отформатированной строке. Тем не менее, я не могу, на всю жизнь, получить чертову строку в NSDate.

- (NSString *)makeDateStringReadable:(NSString *)dateString {
    NSLog(@"The String: %@", dateString);
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy-MM-ddTHH:mm:ss.zzzz"];
    NSDate *theDate = [formatter dateFromString:dateString];
    NSLog(@"The Date: %@", theDate);
    [formatter setDateFormat:@"yyyy-MM-dd"];
    NSString *finalString = [formatter stringFromDate:theDate];
    [formatter release];
    return finalString;
}

Исходная строка передается и выходит из системы, но в журнале «Дата:» всегда отображается ноль. Я предполагаю, что формат неправильный ... но я не могу получить его, чтобы быть правильным. Я попытался использовать этот в качестве справки.

Могу ли я получить помощь гуру DateFormatter? Большое вам спасибо!

1 Ответ

13 голосов
/ 16 августа 2011

Одна проблема (но, возможно, не проблема ) заключается в том, что zzzz не является правильной спецификацией для 000Z. Конец отметки времени RFC 3339 - это не спецификация часового пояса из четырех символов, а дробные секунды плюс буквальное «Z». Поэтому попробуйте изменить zzzz на SSS'Z'.

...