2014-09-24 2 views
0

Я создал приложение для получения даты рождения человека. Я использовал UITextBox, чтобы взять дату рождения пользователя из UIDatePicker (показывает, когда пользователь нажимает на UITextBox). Когда я выбираю дату, месяц и год и нажимаю кнопку «установить», то дата отображается в UITextBox, но дни не в правильном формате. Когда я установил дату 02/16/1993 (MM/DD/YYYY), я получил 02/47/1993 в UITextBox. Добавлены слова (31 + 16 = 47), но я хочу показать 02/16/1993. Мой код:Чтобы выбрать правильный формат даты от UIDatePicker

NSArray *allViews=[dateSheet subviews]; 
    for (UIView *subView in allViews) 
    { 
     if ([subView isKindOfClass:[UIDatePicker class]]) 
     { 
      self.birthdate=[(UIDatePicker *)subView date]; 
     } 
    } 
    NSDateFormatter *dateFormatter= [[NSDateFormatter alloc] init]; 
    [dateFormatter setDateFormat:@"MM/dd/yyyy"]; 
    [txtDOB setText:[dateFormatter stringFromDate:self.birthdate]]; 

Что мне делать, чтобы получить правильный формат?

ответ

0

Вы можете попробовать это:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init]; 
    [dateFormatter setDateFormat:@"MM/dd/yyyy"]; 
    NSString *strDate = [dateFormat stringFromDate:datePicker.date]; 
    txtDOB.text = strDate; 

Но я думаю, что есть что-то неправильно в создавая свой выбор даты. Вы должны объявить выбор даты в вашем .h файле.

+0

Я делаю это, и я получаю правильный формат, но теперь я получаю this-> CGContextSetFillColorWithColor: недопустимый контекст 0x0. Это серьезная ошибка. Это приложение или используемая им библиотека использует недопустимый контекст и тем самым способствует общему ухудшению стабильности и надежности системы. Это уведомление является любезностью: устраните эту проблему. Это станет фатальной ошибкой в ​​предстоящем обновлении ........ Что это такое и как я удаляю эту ошибку, которая находится в области отладки –

+0

Откуда вы получаете эту ошибку? – teach

0

Очевидно, проблема заключается в том, что день отображается как «день года», а не «день месяца». Который, вероятно, может быть из-за вас, используя «DD» вместо «D» для расчета день ..

См: http://www.unicode.org/reports/tr35/tr35-19.html#Date_Format_Patterns

Вы можете установить, что в строке «setDateFormat». В противном случае я предлагаю вам использовать NSDateComponents, что позволит не только дать точные результаты, но и низкий предел погрешности ...

Смежные вопросы