2010-07-05 4 views
1

Задача: показать UIDatePicker и захватить выбранную дату, а затем отобразить выбранную дату на ярлыке (в формате День, Месяц, Год).iPhone date picker, как получить доступ к отдельным объектам

Текущий прогресс:

-(IBAction)pressButton:(id)sender 
{ 
    NSDate *selected = [datePicker date]; 
    NSString *message = [[NSString alloc] initWithFormat:@"%@", selected]; 

    date.text = message; 
} 

Это будет отображать дату в формате YYYY-MM-DD 23:20:11 +0100. Я не хочу отображать время. Я также хочу отображать дату в другом формате.

Возможно ли получить доступ к отдельным компонентам механизма выбора даты, т.е. datePicker.month

Любые решения или ссылки приветствуются.

ответ

1

Что вы хотите, это метод descriptionWithCalendarFormat:timeZone:locale:. См Apple's description of the method.

Например, для отображения даты в формате только YYYY-MM-DD, вы будете использовать:

NSString *message = [selected descriptionWithCalendarFormat: @"%Y-%m-%d" timeZone: nil locale: nil] 

Я считаю, что формат строки здесь используются те же лексемы, как strptime от C стандартная библиотека, но могут быть некоторые незначительные расхождения, зная Apple. Описание этого формата: here.

Вы также можете использовать класс NSDateFormatter 'stringFromDate: method. Он использует другой формат (формат Unicode). Я считаю, что это «предпочтительный» способ форматирования строк даты в Objective C, но, вероятно, это также немного сложнее в использовании.

И наконец, см. this SO question для получения информации об извлечении отдельных компонентов NSDate.

Надеюсь, что это поможет.

+0

Благодарим вас за ответы, воспользовались этой линией и отсортировали ее по всем направлениям. –

+0

Поскольку вы нашли этот ответ полезным, вы можете повысить его и/или пометить его правильно в интересах других пользователей :) –

0

Datepicker - это специальный случай uipickerview, поэтому вы можете получить значение в каждом компоненте, но я не должен находиться перед Xcode, чтобы проверить это.

Вы можете использовать NSDateFormatter для изменения возвращаемого вами nsdateformatter в любом формате, который вы ищете.

2

Если вы говорите о доступе к отдельным компонентам механизма выбора даты, вы не можете. UIDatePicker не наследует от UIPickerView, поэтому у них нет API. Однако в документации указывается, что UIDatePicker «управляет настраиваемым объектом выбора в качестве подзадачи», что означает, что вы можете пересекать подпрограммы UIDatePicker до тех пор, пока не найдете UIPickerView. Обратите внимание, что это довольно рискованно.

+0

Что хочет OP - это компоненты даты, то есть день, месяц, год. Вы можете получить дату из UIDatePicker с помощью [UIDatePicker date], а затем получить отдельные компоненты от этого, используя NSDateComponents. –

1
NSDate *selected = [picker date]; 
NSDateFormatter* formatter = [[[NSDateFormatter alloc] init] autorelease]; 

//Set the required date format 

[formatter setDateFormat:@"yyyy-MM-dd"]; //MM returns name of month small mm return the number. 

//Get the string date 

NSString* date = [formatter stringFromDate:selected]; 

//Display on the console 

NSLog(@"%@",date); 
Смежные вопросы