2014-10-03 1 views
0

Привет, я выбираю дату с UIDatePicker и конвертируем его в NSstring .. Вся дата работает нормально. Привет, максимальная дата установлена ​​как 2001-12-31. Когда я выбираю эту дату строку возвращения как "2002-12-31"Преобразование NSDate в NString issue

dOBPicker = [[UIDatePicker alloc]initWithFrame:CGRectMake(20, 30, 360, 55)]; 
dOBPicker.datePickerMode = UIDatePickerModeDate; 


NSDateFormatter* formatter = [[NSDateFormatter alloc] init]; 
formatter.dateFormat = @"YYYY-MM-dd"; 
dOBPicker.maximumDate = [formatter dateFromString:@"2001-12-31"]; 

Конверсия здесь

NSDateFormatter *dateOfBirthFormat =[[NSDateFormatter alloc]init]; 
dateOfBirthFormat.dateFormat = @"YYYY-MM-dd"; 

[dateOfBirthFormat setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]; 
NSString *dob = [dateOfBirthFormat stringFromDate:dOBPicker.date]; 

NSLog(@"The dob is %@", dob); 

Выход как: 2002-12-31

ответ

2

Вы нужно использовать «yyyy» не «YYYY».

«Y»: Год (в календаре «Неделя года»). Обычно длина указывает заполнение, но для двух букв оно также указывает максимальную длину. В этом году обозначение используется в календарном году ISO год, как определено ISO 8601, но может использоваться в календарных системах, не связанных с григорианцами, где желательна обработка даты недели. Может не всегда быть той же ценностью, что и календарный год.

 
Y year of "Week of Year": 
    Y -> 1997 

"y": Year. Обычно длина указывает заполнение, но для двух букв оно также указывает максимальную длину.

 
y year: 
    yy -> 96 
    y or yyyy -> 1996 

См: ICU Formatting Dates and Times
также: CLDR Date Field SymbolTable.

+0

Спасибо за ваш ответ я буду проверять – Seeker

1

Вы должны заменить форматирование к этому:

@"yyyy-MM-dd"