2010-11-19 18 views
3
NSDateFormatter *timeFormat = [[NSDateFormatter alloc] init]; 
[timeFormat setDateFormat:@"hh:mm a"]; 

NSDate* sourceDate = [timeFormat dateFromString:@"19/11/2010 12:00 am"]; 
if(sourceDate==nil) 
{ 
    NSLog(@"source date nil"); 
} 

J'utilise le réglage 24 heures sur iPhone. Après que je passe au réglage de 24 heures, la date de la chaîne revient toujours à zéro. Je remplace le format 12 heures, ça marche à nouveau. Pourquoi ?dateFromString retour nul après modification 24 heures

Répondre

5

Les paramètres régionaux doivent être définis pour éviter d'être affectés par le changement de réglage de 24 heures.
Le format doit aussi correspondre à la chaîne d'entrée (qui, dans votre exemple comprend la date):

NSDateFormatter *timeFormat = [[NSDateFormatter alloc] init]; 
NSLocale *locale = [[[NSLocale alloc] 
        initWithLocaleIdentifier:@"en_US_POSIX"] autorelease]; 
[timeFormat setLocale:locale]; 
[timeFormat setDateFormat:@"dd/MM/yyyy hh:mm a"]; 

NSDate* sourceDate = [timeFormat dateFromString:@"19/11/2010 12:00 am"]; 
if(sourceDate==nil) 
{ 
    NSLog(@"source date nil"); 
} 

Voir QA1480 pour plus d'informations.