Конвертировать NSString даты в NSDate - PullRequest
10 голосов
/ 02 декабря 2010

Это может быть глупый вопрос, но я не могу найти ответ здесь или в документации.

Я хочу преобразовать строку NSSt, например @ "22.09.2010 15:45", в NSDate.

Я знаю, как использовать NSDateFormatter, но проблемы

  1. Месяц может состоять из одной или двух цифр
  2. Аналогично, дата может состоять из одной или двух цифр
  3. Часы могут состоять из одной или двух цифр
  4. Что мне делать с AM / PM?

Ответы [ 3 ]

26 голосов
/ 02 декабря 2010
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"MM/dd/yyyy h:mm a"];
NSDate *date = [dateFormat dateFromString:dateStr];
[dateFormat release];

нет проблем в двухзначном или двузначном месяце.

Это должно помочь вам.

3 голосов
/ 02 декабря 2010

Вы можете разобрать NSString в NSDate, используя класс NSDateFormatter.См. документацию для получения дополнительной информации:

Экземпляры NSDateFormatter создают строковые представления объектов NSDate (и NSCalendarDate) и преобразовывают текстовые представления дат и времени в объекты NSDate.

2 голосов
/ 07 июня 2012

У меня была та же проблема, не уверен, почему NSDateFormatter не работает для меня (iOS5 - Xcode 4.3.2), но это сработало для меня:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];
[dateFormatter setDateFormat:@"dd-MM-yyyy"];
NSString *dateString = @"05-06-2012";
NSDate *date;
NSError *error = nil; 
if (![dateFormatter getObjectValue:&date forString:dateString range:nil error:&error]) {
    NSLog(@"Date '%@' could not be parsed: %@", dateString, error);
}
[dateFormatter release];
...