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)!;
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) } }
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.
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.