Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как изменить NSDateFormatter для строки

Автор вопроса: lifemovesonОтветов: 2

У меня есть строка, в которой есть поле даты. Я храню поле как NSString в своей базе данных, например, 2011-12-07 21:15:00 +0000.

Я использую следующий код, чтобы получить дату из строки в формате даты, например:

NSDateFormatter *dateFormat = [[[NSDateFormatter alloc] init] autorelease];
[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss.S"];

Мне нужен вышеуказанный формат даты в формате времени как чч, но он всегда дает ноль. Мой код:

    NSDateFormatter *dateFormat = [[[NSDateFormatter alloc] init] autorelease];
    [dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss.S"];

    NSDateFormatter *timeFormat = [[[NSDateFormatter alloc] init] autorelease];
    [timeFormat setDateFormat:@"hh a"];

    [dateFormat setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease] ];
    NSDate *date1 = [dateFormat dateFromString:startSection];

    NSLog(@"Date 1 : %@", date1);


    [timeFormat setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease] ];
    NSDate *time1 = [timeFormat dateFromString:startSection];
    NSString *strSection2 = [NSString stringWithFormat:@"%@", time1];
    NSLog(@"Time 1 : %@", strSection2); /// always null at this place.

Я не уверен, что я делаю неправильно здесь. Может ли кто-нибудь помочь мне здесь?

  • Привет! Вы пробовали то, что я предложил? Работает ли это для вас? Phlibbo 14.10.2011
  • Привет Phlibbo. Спасибо за вашу помощь. Но мой больше, чем просто смотреть в дату. Мне нужно отсортировать строку, для которой я должен написать код. lifemoveson 15.10.2011
  • Извините, но я не понял ни слова из вашего последнего комментария :/ Phlibbo 15.10.2011
  • Итак, чтобы понять это прямо: вы читаете строку, которая должна быть в формате @гггг-мм-дд ЧЧ:мм:сс.С. Это не сработало для вас, я сказал вам, почему. Тогда вы хотите сохранить эту дату в другом формате? (хх а)? Если это не так, вы можете предоставить нам дополнительную информацию в своем вопросе. Phlibbo 15.10.2011

iphoneobjective-cnsdateformatternsdate

Ответы

Ответ 1 · EricLeaf

Покажите вывод при запуске этого кода, который будет полезен. Но если бы мне пришлось догадываться, что вы делаете что-то не так в части формата времени. Я бы посоветовал вам получить дату из строки базы данных, используя средство форматирования даты, которое у вас есть, и в этот момент в коде: (что, как я предполагаю, работает)

[dateFormat setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease] ];
NSDate *date1 = [dateFormat dateFromString:startSection];

NSLog(@"Date 1 : %@", date1);

Переключите передачу после приведенного выше кода и сделайте это вместо того, чтобы получить свое время в строке в желаемом формате:

[timeFormat setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease] ];
NSString * time = [timeFormat stringWithDate:date1];
NSLog(@"Time 1 : %@", time);

Ответ 2 · Phlibbo

Ваша дата идет 2011-12-07 21:15:00 +0000, а ваша formatString идет @"yyyy-MM-dd HH:mm:ss.S". Проблема здесь в ss.S. Сделайте @"yyyy-MM-dd HH:mm:ss +S" и все заработает.

Что касается формата времени, я не уверен, что вы делаете. Очевидно, вы передаете ему ту же строку (startSection), которая даже близко не похожа на hh a.

Обновление: О, и, если я не ошибаюсь, форматирование соответствует эти соглашения означают, что вы, вероятно, ищете Z, а не S.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы