Как преобразовать NSString в NSDate? - PullRequest
1 голос
/ 17 января 2012

Я хочу найти в моем массиве словаря определенную дату. Например, я хочу найти в моем массиве словаря дату "16 Jan 2012" в строковом формате, но мой элемент словаря в массиве содержит дату и время, скажем "16 Jan 2012 somehours:somemins:somesecs". Я конвертирую строковый формат даты в формате NSDate, но получаю дату как 2012-01-15 18:30:00 +0000 вместо 2012-01-16. Я использую NSPredicate для поиска даты, которая конвертирует дату в секунды следующим образом "Date == CAST(348345000.000000, "NSDate")" и сравнивает ее, хотя мои записи содержать дату как "16 Jan 2012 somehours:somemins:somesecs", что не удовлетворяет критериям. Я хочу, чтобы записи / массив, содержащие дату как "16 Jan 2012 somehours:somemins:somesecs", удовлетворяли критериям поиска. Пожалуйста, кто-нибудь может знать, как этого добиться?

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 17 января 2012

Чтобы избавиться от автоматической настройки NSDateFormatter для вашего часового пояса, используйте что-то вроде этого.

dateFormatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];

Для уточнения;«16 Jan 2012» Не содержит значения часов, минут или секунд, поэтому при разборе его с NSDateFormatter можно ожидать NSDate с описанием «2012-01-16 00:00:00 +000», но это не то, что вы получаете, потому что форматировщик датыкорректируется на 5:30 часов между временем по Гринвичу и Индией?Установив часовой пояс форматера даты явно, вы избежите этой проблемы.

0 голосов
/ 17 января 2012

Вам необходимо использовать NSDateFormatters для преобразования строки даты из одного формата в другой. Вы можете иметь inputDateFormatter, где вы используете dateFromString, чтобы дать вам NSDate, а затем передать его в outputDateFormatter, который дает желаемую строку.

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd MMM yyyy"];
NSString *dateInFormatYouWant = [dateFormatter stringFromDate:yourDate]

Я не уверен, есть ли более эффективный способ сделать это, чем этот.

...