Подтвердить что ты не робот

Строковое описание NSDate

У меня есть следующий код:

[ [NSDate date] descriptionWithLocale: @"yyyy-MM-dd" ]

Я хочу, чтобы он вернул дату в следующем формате: "2009-04-23"

Но он возвращается: четверг, 23 апреля 2009 г. 11:27:03 GMT + 03: 00

Что я делаю неправильно?

Спасибо заранее.

4b9b3361

Ответ 1

Вы используете неправильный метод. Вместо этого попробуйте descriptionWithCalendarFormat:timeZone:locale:

[[NSDate date] descriptionWithCalendarFormat:@"%Y-%m-%d"
                                    timezone:nil
                                      locale:nil];

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

EDIT: хотя, как заметил Майк, вы действительно должны использовать NSDateFormatter. Существуют некоторые проблемы с descriptionWithCalendarFormat:timeZone:locale:, которые Apple упоминает в документации.

Ответ 2

NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
NSString *dateString = [dateFormatter stringFromDate:[NSDate date]];
[dateFormatter release];  // delete this line if your project uses ARC
NSLog(@"%@",dateString); 

Ответ 3

Также обратите внимание, что в большинстве случаев NSDateFormatter является предпочтительным для его гибкости.

Также существует значительное преимущество в производительности от повторного использования форматов даты во многих приложениях.

Ответ 4

Если у вас нет NSDate -descriptionWithCalendarFormat:timeZone:locale: доступных (я не верю, что iPhone/Cocoa Touch включает это), вам может потребоваться использовать strftime и обезьяна с некоторыми строками в стиле C. Вы можете получить временную метку UNIX из NSDate с помощью NSDate -timeIntervalSince1970.