iOS получает время от даты - PullRequest
       15

iOS получает время от даты

1 голос
/ 17 октября 2011

Я занимаюсь разработкой приложения, и мне нужно проанализировать временную метку Tweet, которая на самом деле представляет собой строку, подобную этой:

"Пн, 17 октября 2011 10:20:40 +0000"

Однако мне нужно только время. Итак, что я пытаюсь получить это:

 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
 [dateFormatter setDateFormat:@"HH:mm"];
 NSDate *date = [dateFormatter dateFromString:timestamp];

но когда я пытаюсь напечатать Date с помощью NSLog, вывод (null), и я не понимаю, почему. Что мне нужно, если это возможно, это создать объект даты только со временем. Действительно, позже мне нужно сравнить разные даты, но я забочусь только о времени. Не важно, если дата отличается из-за дня, месяца или года, важно то, что я могу сравнить их с «timeIntervalSinceDate», чтобы получить разницу в секундах.

Любая помощь будет по достоинству оценена.

Спасибо Ale

Ответы [ 2 ]

6 голосов
/ 17 октября 2011

NSDATE - это объект полной даты, для него требуется время. Вы можете использовать NSDateFormatter только для отображения времени, но вам нужно будет проанализировать полную строку, чтобы получить объект NSDate.

Вот код, который вы можете использовать:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
//Mon, 11 Jul 2011 00:00:00 +0200
[dateFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"EN"] autorelease]];
[dateFormatter setDateFormat:@"EEE, d MMM yyyy HH:mm:ss ZZZZ"];

NSDate *date = [dateFormatter dateFromString: timestamp];
[dateFormatter release], dateFormatter = nil;

Вам нужно установить локальный код, чтобы убедиться, что он читает метку времени на правильном языке. Также выделите dateFormatter вне любых циклов и отпустите его после того, как вы закончите с циклом.

0 голосов
/ 17 октября 2011

Посмотрите на NSDateComponents . Вы должны быть в состоянии создать дату из компонентов. Однако вам придется анализировать временную метку самостоятельно (что должно быть легко - просто разделите двоеточие и возьмите число из каждого компонента).

...