J'ai un NSString
comme ceci: @"3/15/2012 9:15 PM"
et je voudrais le convertir en NSDate
, j'ai fait comme ceci:
NSString *str =@"3/15/2012 9:15 PM";
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@"mm/dd/yyyy HH:mm"];
NSDate *date = [formatter dateFromString:];
NSLog(@"%@", date); // date = null
Pouvez-vous m'aider s'il vous plaît, merci.
Utilisez la solution suivante
NSString *str = @"3/15/2012 9:15 PM";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"MM/dd/yyyy HH:mm a";
NSDate *date = [formatter dateFromString:str];
NSLog(@"%@", date);
Edit: Désolé, le format devrait être le suivant:
formatter.dateFormat = @"MM/dd/yyyy hh:mm a";
Et l'heure indiquée sera l'heure GMT. Donc, si vous ajoutez/soustrayez le fuseau horaire, il serait 21h15.
Modifier: # 2
Utilisez comme ci-dessous. Vous obtiendrez également l'heure exacte.
NSString *str = @"3/15/2012 9:15 PM";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"MM/dd/yyyy hh:mm a";
NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
formatter.timeZone = gmt;
NSDate *date = [formatter dateFromString:str];
NSLog(@"%@",date);
Votre formateur est incorrect. Selon la documentation NSDateFormatter, il doit s'agir de "MM/jj/aaaa h: mm a". Vous souhaitez également probablement définir les paramètres régionaux comme indiqué dans la directive de formatage de la date:
Si vous travaillez avec des dates au format fixe, vous devez d'abord définir les paramètres régionaux du formateur de date sur quelque chose de approprié pour votre format fixe. Dans la plupart des cas, le meilleur environnement local à choisir est en_US_POSIX, un environnement local spécialement conçu pour produire des résultats en anglais américain, quelles que soient les préférences de l'utilisateur et du système.
Essaye ça:
NSString *str = @"3/15/2012 9:15 AM";
NSLocale *enUSPOSIXLocale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease];
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
[formatter setLocale:enUSPOSIXLocale];
[formatter setDateFormat:@"MM/dd/yyyy h:mm a"];
NSDate *date = [formatter dateFromString:str];
NSLog(@"%@",date);
Les sorties:
2012-03-19 12:37:27.531 Untitled[6554:707] 2012-03-15 08:15:00 +0000
Hmmm - vous vous êtes trompé pour plusieurs raisons
NSString* str = @"3/15/2012 9:15 PM";
NSDateFormatter* formatter = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@"MM/dd/yyyy HH:mm a"];
NSDate* date = [formatter dateFromString:str];
NSLog(@"%@",date);
NSString *str =@"3/15/2012 9:15 PM";
NSDateFormatter *dateformatter = [[NSDateFormatter alloc]init];
[dateformatter setDateFormat:@"MM/dd/yyyy"];
NSArray *firstSplit = [str componentsSeparatedByString:@" "];
NSDate *dateSelected = [dateformatter dateFromString:[firstSplit objectAtIndex:0]];
[dateformatter setDateFormat:@"mm:ss"];
NSDate *dateSelected2 = [dateformatter dateFromString:[firstSplit objectAtIndex:1]];
NSLog(@"%@",[dateformatter stringFromDate:dateSelected2]);
NSLog(@"%@",[dateformatter stringFromDate:dateSelected]);