Question

Dans mon projet, je reçois "2008-02-01T10: 03: 23,793 à 06: 00" ce format de date dans la chaîne que je dois convertir en NSDate je suis en utilisant

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

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

NSDate* dateFromString = [dateFormatter dateFromString:@"2008-02-01T10:03:23.793-06:00"];

Mais quand je suis valeur à la date d'impression à l'aide NSLog je reçois valeur nulle.

S'il vous plaît, aidez-moi

Merci

Était-ce utile?

La solution

NSDateFormatter ne sera pas en mesure d'analyser, car le fuseau horaire ne se conforme pas avec RFC 822 ou GMT norme. Le problème est le dernier « : ». Pour avoir besoin de vous le « GMT »

La date à laquelle vous respecte la RFC 3339 .

Vous aurez besoin d'utiliser un NSFormatter pour l'analyser. Vous devez utiliser getObjectValue:forString:errorDescription:

Définir la chaîne @"yyyy-MM-dd'T'HH:mm:ss.SSSZ".

Autres conseils

    NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZZZ"];
[formatter setLenient:YES];
NSString* buggeredTime = [[sourceDate substringToIndex:26] stringByAppendingString:[sourceDate substringFromIndex:27]];
NSDate* dueDate = [formatter dateFromString:buggeredTime];
[formatter setDateFormat:@"'Time Due: 'hh:mm a  MM/dd/yy"];
NSString* dateString = [formatter stringFromDate:dueDate];
[formatter release];

(J'sais désinvolture si le setLenient est nécessaire.)

Juste utiliser à la place (notez le "ZZZ" au lieu de "Z"):

[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZZZ"];

Je pense que vous devez définir un paramètre régional pour le formatter aussi. Regardez

GData Objective-C client de Google a une classe (GDataDateTime) qui peuvent analyser les dates RFC 3339.

http: // code.google.com/p/gdata-objectivec-client/source/browse/trunk/Source/Elements/GDataDateTime.m

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top