Pergunta

Eu tenho o seguinte código:

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

Eu quero que ele retornar uma data no seguinte formato: "2009-04-23"

Mas ele retorna: quinta - feira, 23 de abril, 2009 23:27:03 GMT + 03: 00

O que estou fazendo de errado?

Agradecemos antecipadamente.

Foi útil?

Solução

Você está usando o método errado. Em vez de tentar descriptionWithCalendarFormat:timeZone:locale:

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

Observe também que o método está esperando um formato diferente do que na sua pergunta. A documentação completa para que possa ser encontrado aqui .

EDIT: Embora como Mike observou, você realmente deve estar usando NSDateFormatter. Existem alguns problemas com descriptionWithCalendarFormat:timezone:locale: que a Apple menciona na documentação.

Outras dicas

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

Observe também que para a maioria dos casos, NSDateFormatter é preferível por sua flexibilidade.

Há também um benefício significativo desempenho a ser tido a partir de re-uso de formatadores de data em muitos aplicativos.

Se você não tem NSDate -descriptionWithCalendarFormat:timeZone:locale: disponível (eu não acredito iPhone / Cocoa Touch inclui este) pode ser necessário o uso strftime e macaco ao redor com algumas cordas de estilo C. Você pode obter o timestamp UNIX a partir de um NSDate usando NSDate -timeIntervalSince1970.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top