2011-07-25 3 views
0

Je veux analyser cette date: "2009-08-24T05: 20: 00"NSDateFormatter question

J'ai essayé, mais ne fonctionne pas:

NSDateFormatter* dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 

[dateFormatter setDateFormat:@"yyyy-MM-ddTHH:mm:ss"]; 

des idées?

+1

Vous devriez voir [ 'this'] (http://stackoverflow.com/questions/6502284/how- to-convert-a-date-string-like-2011-06-25t1100260100-to-a-long-ipho/6502301 # 6502301) –

+0

Assurez-vous que le téléphone ne se trouve pas dans un environnement local de 24 heures mais réglé sur 12 heures. –

Répondre

2

J'ai créé une catégorie pour cela:

NSString + DateParse.h

@interface NSString (DateParse) 

-(NSDate *) dateFromISO8601; 

@end 

NSString + D ateParse.m

@implementation NSString (DateParse) 

-(NSDate *) dateFromISO8601 { 

    NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease]; 
    NSString *format = ([self hasSuffix:@"Z"]) ? @"yyyy-MM-dd'T'HH:mm:ss'Z'" : @"yyyy-MM-dd'T'HH:mm:ssz"; 
    [formatter setFormatterBehavior:NSDateFormatterBehavior10_4]; 
    [formatter setDateFormat:format]; 
    [formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]]; 
    return [formatter dateFromString:self]; 

} 

@end 

Donc, supposons que si vous avez une chaîne appelée strDate:

NSDate * dtParsed = [strDate dateFromISO8601]; 
+0

Oui, cela fonctionne (même si un peu trop pour mon petit problème). Merci. Cependant, je dois maintenant choisir la bonne réponse et il semble y avoir plus d'une réponse correcte :) –

2
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"]; 

Vous devez utiliser autour du T. apostrophes

+0

Oui, cela fonctionne. Merci. Cependant, je dois maintenant choisir la bonne réponse et il semble y avoir plus d'une réponse correcte :) –

2
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS"]; 

Essayez cette

+0

Oui, cela fonctionne. Merci. Cependant, je dois maintenant choisir la bonne réponse et il semble y avoir plus d'une réponse correcte :) –