description String de NSDate
-
13-09-2019 - |
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.
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
.