Formatando NSDate em estilos específicos para ano, mês, dia e hora, minuto, segundos

Eu basicamente preciso obter data e hora atuais separadamente, formatadas como:

 2009-04-26 
 11:06:54

O código abaixo, de outra pergunta sobre o mesmo tópico, gera

 agora: | 2009-06-01 23:18:23 +0100 | 
 dateString: | 01 de junho de 2009 23: 18 | 
 parsed: | 2009-06-01 23:18:00 +0100 |

Isso é quase o que estou procurando, mas quero separar o dia e a hora.

NSDateFormatter *format = [[NSDateFormatter alloc] init]; [format setDateFormat:@"MMM dd, yyyy HH:mm"]; NSDate *now = [[NSDate alloc] init]; NSString *dateString = [format stringFromDate:now]; NSDateFormatter *inFormat = [[NSDateFormatter alloc] init]; [inFormat setDateFormat:@"MMM dd, yyyy"]; NSDate *parsed = [inFormat dateFromString:dateString]; NSLog(@"\n" "now: |%@| \n" "dateString: |%@| \n" "parsed: |%@|", now, dateString, parsed); 

Cadeias de formato do iPhone estão no formato Unicode . Por trás do link, há uma tabela explicando o que significam todas as letras acima, para que você possa criar as suas próprias.

E, claro, não esqueça de liberar seus formatadores de data quando terminar com eles. O código acima vaza format , now e inFormat .

é isso que eu usei:

 NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; [dateFormat setDateFormat:@"yyyy-MM-dd"]; NSDateFormatter *timeFormat = [[NSDateFormatter alloc] init]; [timeFormat setDateFormat:@"HH:mm:ss"]; NSDate *now = [[NSDate alloc] init]; NSString *theDate = [dateFormat stringFromDate:now]; NSString *theTime = [timeFormat stringFromDate:now]; NSLog(@"\n" "theDate: |%@| \n" "theTime: |%@| \n" , theDate, theTime); [dateFormat release]; [timeFormat release]; [now release]; 

você pode usar este método apenas passar sua data para ele

 -(NSString *)getDateFromString:(NSString *)string { NSString * dateString = [NSString stringWithFormat: @"%@",string]; NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"your current date format"]; NSDate* myDate = [dateFormatter dateFromString:dateString]; NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"your desired format"]; NSString *stringFromDate = [formatter stringFromDate:myDate]; NSLog(@"%@", stringFromDate); return stringFromDate; } 
  NSDateFormatter *dateformat = [[NSDateFormatter alloc] init]; [dateformat setDateFormat:@"Your Date Format"]; 

definir o formato para retornar é ….

yyyy-MM-dd return 2015-12-17 data

yyyy-MMM-dd return data de 2015-Dec-17

yy-MM-dd return 15-12-17 date

dd-MM-yy return 17-12-15 date

dd-MM-yyyy return 17-12-2015 date

yyyy-MMM-dd HH:mm:ss retornar 2015-Dec-17 08:07:13 data e hora

yyyy-MMM-dd HH:mm retornar 2015-Dec-17 08:07 data e hora

Para mais detalhes de dados e formato de hora para clique agora.

Obrigado…..

nada de novo, mas ainda quero compartilhar o meu método:

 +(NSString*) getDateStringFromSrcFormat:(NSString *) srcFormat destFormat:(NSString *) destFormat scrString:(NSString *) srcString { NSString *dateString = srcString; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; //[dateFormatter setDateFormat:@"MM-dd-yyyy"]; [dateFormatter setDateFormat:srcFormat]; NSDate *date = [dateFormatter dateFromString:dateString]; // Convert date object into desired format //[dateFormatter setDateFormat:@"yyyy-MM-dd"]; [dateFormatter setDateFormat:destFormat]; NSString *newDateString = [dateFormatter stringFromDate:date]; return newDateString; } 

Para rápida

 var dateString:String = "2014-05-20"; var dateFmt = NSDateFormatter() // the format you want dateFmt.dateFormat = "yyyy-MM-dd" var date1:NSDate = dateFmt.dateFromString(dateString)!; 

Swift 3

 extension Date { func toString(template: String) -> String { let formatter = DateFormatter() formatter.dateFormat = DateFormatter.dateFormat(fromTemplate: template, options: 0, locale: NSLocale.current) return formatter.string(from: self) } } 

Uso

 let now = Date() let nowStr0 = now.toString(template: "EEEEdMMM") // Tuesday, May 9 let nowStr1 = now.toString(template: "yyyy-MM-dd") // 2017-05-09 let nowStr2 = now.toString(template: "HH:mm:ss") // 17:47:09 

Jogue com o modelo para atender às suas necessidades. Exemplos e documentos aqui para ajudá-lo a criar o modelo de que você precisa.

Nota

Você pode querer armazenar em cache seu DateFormatter se planeja usá-lo no TableView por exemplo. Para dar uma ideia, o loop de mais de 1000 datas levou 0,5 segundo usando a function toString(template: String) , em comparação com 0,05 seg usando myFormatter.string(from: Date) .

 NSDate *date = [NSDate date]; NSDateFormatter *df = [[NSDateFormatter alloc] init]; [df setDateFormat:@"yyyy-MM-dd"] NSString *dateString = [df stringFromDate:date]; [df setDateFormat:@"hh:mm:ss"]; NSString *hoursString = [df stringFromDate:date]; 

É isso, você tem tudo o que quer.