132 votes

NSDate et NSDateFormatter - format court de la date et de l'heure dans le SDK de l'iPhone

J'ai cherché des réponses, mais celles que j'ai trouvées ne semblaient pas être spécifiques à l'iPhone.

J'ai essentiellement besoin d'obtenir séparément la date et l'heure actuelles, formatées comme suit :

2009-04-26 
11:06:54

Editar:

Le code ci-dessous, issu d'une autre question sur le même sujet, génère

now:        |2009-06-01 23:18:23 +0100| 
dateString: |Jun 01, 2009 23:18| 
parsed:     |2009-06-01 23:18:00 +0100|

C'est presque ce que je recherche, mais j'aimerais obtenir uniquement la date dans une variable et uniquement l'heure dans une autre.

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

194voto

AudioVisualCode Points 903

C'est ce que j'ai utilisé :

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

72voto

Rob Napier Points 92148

Les chaînes de format de l'iPhone sont dans Format Unicode . Derrière le lien se trouve un tableau expliquant la signification de toutes les lettres ci-dessus afin que vous puissiez construire le vôtre.

Et bien sûr, n'oubliez pas de libérer vos formateurs de date lorsque vous en avez fini avec eux. Le code ci-dessus fuit format , now y inFormat .

12voto

guru Points 102

Vous pouvez utiliser cette méthode en lui passant votre date.

-(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;
}

-1voto

SVMRAJESH Points 1685

C'est très simple. Essayez ceci

Code :

NSString* string=@"26-01-2014";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd-mm-yyyy"];
NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[dateFormatter setTimeZone:gmt];

NSDate *mydate = [dateFormatter dateFromString:string];
NSLog(@"Date = %@",mydate);

-6voto

Nikesh K Points 480
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];

C'est ça, tu as tout ce que tu veux.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X