Преобразование NSString даты в NSDate
Это может быть глупый вопрос, но я не могу найти ответ здесь или в документации.
Я хочу преобразовать NSString, например @ "9/22/2010 3:45 PM" в NSDate.
Я знаю, использовать NSDateFormatter, но проблемы
- В месяце может быть одна или две цифры
- Аналогично, дата может быть одной или двумя цифрами
- Часами может быть одна или две цифры
- Что мне делать с AM/PM?
Ответы
Ответ 1
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"MM/dd/yyyy h:mm a"];
NSDate *date = [dateFormat dateFromString:dateStr];
[dateFormat release];
нет проблем в двухзначном или двухзначном месяце.
Это должно помочь вам.
Ответ 2
Вы можете проанализировать NSString
в NSDate
с помощью класса NSDateFormatter
. Для получения дополнительной информации см. документацию:
Экземпляры NSDateFormatter создают строковые представления объектов NSDate (и NSCalendarDate) и преобразуют текстовые представления дат и времени в объекты NSDate.
Ответ 3
У меня была такая же проблема, не знаю, почему 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];