2010-05-25 19 views
0

Je suis novice de c-objectif et je suis arrivé à ce problème fou ...NSDateFormatter renvoie zéro sur 2 entrées différentes qui dans le même format?

pour une faible cas de test de précision:

dateString = @ "2010-05-25 11:05:21", le succès de conversion .

dateString = @ "2010-03-01 15:54:36", la conversion échoue.

pour le cas de test de haute précision:

dateString = @ "2010-05-25 11: 05: 21,937113", le succès de la conversion.

dateString = @ "2010-03-01 15: 54: 36.937113", échec de la conversion.

ci-dessous est mon code:

// Date formatter 
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]; 
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
[dateFormatter setFormatterBehavior:NSDateFormatterBehavior10_4]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd hh:mm:ss.SSSSSS"]; 
[dateFormatter setLocale:locale]; 

NSDateFormatter *lowPrecisionDateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
[lowPrecisionDateFormatter setFormatterBehavior:NSDateFormatterBehavior10_4]; 
[lowPrecisionDateFormatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"]; 
[lowPrecisionDateFormatter setLocale:locale]; 

// try high precision first, if fail, then go ahead to low precision. 
NSDate *date = [dateFormatter dateFromString:dateString]; 
if(!date){ 
    date = [lowPrecisionDateFormatter dateFromString:dateString]; 
} 

Toute aide est très appréciée !!

Répondre

4

Ceci est juste une supposition, mais je pense que cela a à voir avec l'utilisation d'un format de jour de 24 heures plutôt que AM et PM. Je crois que si vous utilisez HH plutôt que hh dans votre chaîne setDateFormat cela devrait fonctionner.

Edit:

En fait, je suis assez confiant que c'est-il après avoir regardé this blog posting.

+0

merci mon ami, le travail de nuit me fait vraiment perdre le focus! :( – sunnycmf