2010-10-08 16 views
1

Quand j'appelleinit] date de retour une heure dans le passé?

NSDate *now = [[NSDate alloc] init]; 

afin d'obtenir la date et l'heure, je vérifie avec:

NSLog(@"Date now: %@", now); 

la date est à une heure en sortie dans le passé.

2010-10-08 12: 04: 38,227 MiniBf [1326: 207] Maintenant: 2010-10-08 11:04:38 GMT

est mon fuseau horaire défini de manière incorrecte quelque part peut-être?

Merci!

Michael

+0

Testez-vous avec un simulateur ou un périphérique réel? L'heure d'été (heure d'été) est-elle active? S'il vous plaît fournir plus d'informations. – AlexVogel

+0

Je le teste en utilisant le simulateur. Je ne trouve nulle part dans le simulateur pour désactiver l'heure d'été? – Smikey

Répondre

0

Utilisez NSDateFormatter pour localiser la date:

NSLog(@"%@",[NSDateFormatter localizedStringFromDate:[NSDate date] dateStyle:NSDateFormatterShortStyle timeStyle:NSDateFormatterShortStyle]); 
+0

Cela affiche en effet la bonne date. Cependant, la date initialisée comme ci-dessus est toujours erronée d'une heure ...: o – Smikey

+1

NSDate fonctionne dans GMT "La seule méthode primitive de NSDate, timeIntervalSinceReferenceDate, fournit la base pour toutes les autres méthodes dans l'interface NSDate. une valeur temporelle par rapport à une date de référence absolue - le premier instant du 1er janvier 2001, GMT. " –

0

Utilisez NSDate * maintenant = [date NSDate]; Je l'utilise et me donne un résultat parfait.

+0

cette méthode utilise la méthode -init, c'est-à-dire que vous pouvez la lire comme [[[NSDate alloc] init] autorelease]; Il devrait y avoir aucune différence. –

0

Peut-être que votre fuseau horaire est faux dans votre simulateur iPhone. Appuyez sur le bouton d'accueil, allez à settings.app et corriger;)

+0

Je ne trouve nulle part dans les paramètres pour changer l'heure. L'heure sur la barre d'état est également correcte. – Smikey

1

j'ai vu que le comportement sur le DatePicker iOS 4.1 fonctionne sur les appareils iOS tandis que sur 4.0 et précédent cela n'arrive pas. Je ne peux pas confirmer que c'est en fait le même bug.

Mais je vous suggère de vérifier si est lié à l'accusé par Apple bug concernant les dates/heure d'été/4.1 en exécutant ce code sur < 4.1. Ensuite, vous devrez décider de pirater un correctif pour cette version particulière/dates ou attendre la prochaine version du SDK pour le fixer et ne pas soutenir 4.1 dispositifs ...

Le bug dont je parle je crois se produit uniquement pendant la période d'été (2010: 28 mars au 31 octobre)