Вопрос

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

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

Я хочу, чтобы он возвращал дату в следующем формате:"23 апреля 2009 г."

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

Что я делаю не так?

Заранее спасибо.

Это было полезно?

Решение

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

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

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

РЕДАКТИРОВАТЬ:Хотя, как заметил Майк, вам действительно следует использовать NSDateFormatter.Есть некоторые проблемы с descriptionWithCalendarFormat:timezone:locale: что Apple упоминает в документации.

Другие советы

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); 

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top