2010-10-10 4 views
1

J'ai probablement oublié quelque chose de simple, mais je n'arrive pas à comprendre comment convertir un format de date spécifique en Objective-C. Je reçois les dates dans ce format:Comment mettre en forme le format de date inconnu en Objective-C

Dim 10 Oct 2010 01:44:00 +0000

Et je dois le convertir en un format long avec peu de temps, comme ceci:

10 Octobre, 2010

J'ai essayé d'utiliser NSDateFormatter, mais lorsque je tente d'obtenir une date de la chaîne, il revient toujours nul. Je l'ai essayé de cette manière:

NSString *dateFromData = [articleData objectAtIndex:5]; 
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 

[dateFormatter setDateStyle:NSDateFormatterLongStyle]; 
[dateFormatter setTimeStyle:NSDateFormatterNoStyle]; 
NSDate *date = [dateFormatter dateFromString:dateFromData]; 

NSString *formattedDateString = [dateFormatter stringFromDate:date]; 

La chaîne de date revient toujours nulle. Ai-je manqué quelque chose de simple ici?

Répondre

1

C'est le code que je suis arrivé à travailler, ne pouvait pas obtenir l'autre chaîne de format pour fonctionner

NSString *dateFromData = @"Sun, 10 Oct 2010 01:44:00 +0000"; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"EEE, dd MMM yyyy hh:mm:ss zzzz"]; 

NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"]; 
[dateFormatter setTimeZone:gmt]; 

NSDate * date = [dateFormatter dateFromString:dateFromData]; 

[dateFormatter setDateStyle:NSDateFormatterLongStyle]; 

NSString *formattedDateString = [dateFormatter stringFromDate:date]; 
0

Le problème est que vous devez utiliser deux formateurs de date. Un pour analyser le format original et un pour produire la sortie désirée. Vous ne pouvez pas non plus utiliser le format de date LongStyle car il ne correspond pas à votre style de saisie.

NSDateFormatter *df = [[NSDateFormatter alloc] initWithDateFormat:@"%a, %d %b %Y %H:%M:%S %z" 
              allowNaturalLanguage:false]; 
NSDate *d = [df dateFromString:@"Sun, 10 Oct 2010 01:44:00 +0000"]; 
NSDateFormatter *df2 = [[NSDateFormatter alloc] initWithDateFormat:@"%B %d, %Y" 
               allowNaturalLanguage:false]; 
[df2 stringFromDate:d] 

(Notez, je l'ai écrit ce code dans MacRuby et porté de nouveau à Objective-C donc il peut-être des erreurs de syntaxe.)

irb(main):001:0> df = NSDateFormatter.alloc.initWithDateFormat("%a, %d %b %Y %H:%M:%S %z", allowNaturalLanguage:false) 
=> #<NSDateFormatter:0x20021b960> 
irb(main):002:0> d = df.dateFromString("Sun, 10 Oct 2010 01:44:00 +0000") 
=> #<NSCalendarDate:0x2002435e0> 
irb(main):004:0> df2 = NSDateFormatter.alloc.initWithDateFormat("%B %d, %Y", allowNaturalLanguage:false) 
=> #<NSDateFormatter:0x20026db60> 
irb(main):005:0> df2.stringFromDate(d) 
=> "October 09, 2010" 
+0

ce code ne fonctionne pas, le premier format de date est incorrecte –

+0

les travaux de formatter me forment. Ajout de la sortie de la session macirb. – dj2

Questions connexes