Могу ли я использовать NSDateFormatter для преобразования этой строки даты в NSDate? - PullRequest
2 голосов
/ 25 августа 2010

У меня есть эта строка ...

2010-08-24T16:00:00-05:00

и я хотел бы извлечь из него часть времени (т.е. 16:00) и преобразовать ее в 12-часовой эквивалент (т.е. 4:00 вечера). Я пытаюсь использовать NSDateFormatter для достижения этой цели, но он не работает ...

NSDateFormatter* dateformatter = [[NSDateFormatter alloc] init];
[dateformatter setDateFormat:@"hh:mm a"];
NSDate *date1 = [dateformatter dateFromString:[listOfTimes objectAtIndex:0]];
[dateformatter release];

Могу ли я использовать NSDateFormatter с этим форматом даты? Если нет, как я могу извлечь время и преобразовать его в 12-часовой эквивалент времени?

Спасибо!

Ответы [ 3 ]

2 голосов
/ 15 февраля 2011

Проблема связана с разбором двоеточия. Я задал тот же вопрос, и решение здесь: Как разобрать строку даты в объект NSDate в iOS?

1 голос
/ 25 августа 2010

Я думаю, вы должны сделать что-то вроде следующего.


    // create the date formatter object 
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];
    NSDate* date = [formatter dateFromString:dateString];
    // set up the new date format
    [formatter setDateFormat:@"hh:mm:ss"];
    NSString *twelveHourTime = [formatter stringFromDate:date];
    [formatter release];

Обновление: исправлен формат строки dateFormatter.У меня была строка ниже, но Z кажется ненужным.Часовые пояса всегда меня облажали.: - /

    [formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"];
0 голосов
/ 06 сентября 2017

Этот ответ необходимо обновить. Начиная с iOS 10, система предоставила NSISO8601DateFormatter для этого конкретного формата.

...