UIDatePicker и выбор дня - PullRequest
       1

UIDatePicker и выбор дня

2 голосов
/ 27 октября 2011

пытается использовать uidatepicker.есть метод, который срабатывает при изменении значения указателя даты.он пропускает значение даты, но когда я пытаюсь взять эту дату, моя часть дней становится глупой.он возвращает количество дней с начала года, а не фактический день месяца.скажем, 3 февраля, вместо 3, я получаю 34.

-(IBAction)datePickerValueChanged: (id)sender;
{        
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"YYYY-MM-DD"];

    self.date = [dateFormatter stringFromDate:[sender date]];
    NSLog(@"date: %@", [dateFormatter stringFromDate:[sender date]]);

    [dateFormatter release];
}

за 12 апреля, я получаю:

2011-10-27 14:22:41.939 Satshot[12789:40b] date02: 2011-04-102

Я предполагаю, что мой dateformatter вызывает это, ноне понимаю почему.

Ответы [ 2 ]

4 голосов
/ 27 октября 2011

Вы используете неправильный спецификатор формата. Вам нужно "yyyy-MM-dd"

http://unicode.org/reports/tr35/tr35-10.html#Date_Format_Patterns

Обновление, ГГГГ и ДД неверны. Спасибо @ jrturton.

3 голосов
/ 27 октября 2011

Из Руководства по форматированию данных :

В нем используется гггг для указания компонента года.Распространенной ошибкой является использование YYYY.yyyy указывает календарный год, тогда как YYYY указывает год («Недели года»), используемый в календаре год-неделя ISO.В большинстве случаев yyyy и YYYY дают одно и то же число, однако они могут быть разными.Обычно вы должны использовать календарный год.

Кроме того, DD должно быть dd.

Хотя почему бы просто не использовать дату для внутреннего хранения значения?

Кроме того, обратите внимание, что создание средства форматирования даты является дорогостоящим упражнением, значение ValueChanged в представлении выбора может вызываться десятки раз в секунду при прокрутке пользователем.Если вы должны использовать форматтер, кэшируйте его.

...