2009-11-06 20 views

Respuesta

129

Quiere date formatter. He aquí un ejemplo:

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"dd-MM-yyyy HH:mm"]; 

NSDate *currentDate = [NSDate date]; 
NSString *dateString = [formatter stringFromDate:currentDate]; 
+0

Editado para iphone-ness. –

+2

no se olvide de liberar su formateador.

+0

A menos que quiera mantenerlo; la administración de memoria puede o no entrar en el problema. –

15

De cualquier uso NSDateFormatter como dijo Carl, o simplemente utilizar el bueno de strftime, que también es perfectamente válido Objective-C:

#import <time.h> 
time_t currentTime = time(NULL); 
struct tm timeStruct; 
localtime_r(&currentTime, &timeStruct); 
char buffer[20]; 
strftime(buffer, 20, "%d-%m-%Y %H:%M", &timeStruct); 
+0

Tenga en cuenta que no puede hacer demasiado con una cadena C en el Objetivo C. Esto podría ser más conveniente al iniciar sesión en la consola. Puedes simplemente decir 'NSLog (@"% s ", buffer)'. –

+3

Cualquier cosa que pueda hacer con una cadena C en C, puede hacerlo en Objective-C. Lo que quiere decir, casi todo. Uno debe sentirse libre de usar cadenas C y NSStrings, y elegir el apropiado para el caso de uso actual. Yo personalmente iría con la solución de Carl, pero es importante tener en cuenta que no es la única. –

+0

Diría que la razón para no usar strftime (a pesar de generar una cadena C que luego debe convertir) es que también pierde la mayor flexibilidad de las opciones de formato de fecha de NSDateFormatter, incluida una mayor longitud variable de los resultados numéricos y pronto. –

7

aquí es una solución simple:

- (NSString *)stringWithDate:(NSDate *)date 
{ 
    return [NSDateFormatter localizedStringFromDate:date 
             dateStyle:NSDateFormatterMediumStyle 
             timeStyle:NSDateFormatterNoStyle]; 
} 

Cambie dateStyle y timeStyle para que coincida con su requisito de formato.

+0

¿No deberías crear la fecha en alguna parte? No lo está pasando. – Randy

+0

Buena captura @Randy, acaba de actualizar la función para pasar el objeto 'date' como parámetro. – Zorayr

3

Tal vez este sea más legible:

NSDateFormatter *date = [[NSDateFormatter alloc] init]; 
    [date setDateFormat:@"HH:mm"]; 
    NSString *dateString = [date stringFromDate:[NSDate date]]; 
    [self.time setText:dateString]; 

En primer lugar creamos un NSDateFormatter incorporada en obj-c con el nombre fecha, a continuación, lo aplicamos por [[NSDateFormatter alloc] init];. Después de eso le decimos al procesador del código que queremos que nuestra fecha tenga HORA/MINUTO/SEGUNDO. Finalmente debemos hacer que nuestra fecha sea una cadena para trabajar con alerta o establecer el valor de una etiqueta, para hacer esto debemos crear una cadena con el método NSString luego usaremos esto: [date stringFromDate: [NSDate date]]

Have Fun with It.

Cuestiones relacionadas