2010-10-19 13 views
1

Quelqu'un pourrait-il m'expliquer cela? J'ai vu quelques problèmes de DateFormatter autour, et tous semblent être liés, mais pas exactement ce à quoi je suis confronté ici.NSDateformatter donner 'null' sur iPhone, date correcte sur iPad

Consultez le code suivant:

NSString * CleanDate = @"20101117T020000-0000"; 
NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyyMMdd'T'HHmmssZ"]; 
NSDate * date = [dateFormatter dateFromString:cleanDate]; 

NSLog(@"CleanDate: %@, Date: %@",cleanDate, date); 

La sortie Ouvrez une session sur un iPhone Simulator est

CleanDate: 20101117T020000-0000, Date: (null)

tandis que sur l'iPad Simulator, il est

CleanDate: 20101117T020000-0000, Date: 2010-11-17 03:00:00 +0100

Mêmes résultats sur les appareils réels. Fait intéressant, tout fonctionnait bien dans l'iPhone Simulator hier soir. J'ai réinitialisé les simulateurs à leurs valeurs par défaut, changé les fuseaux horaires et les langues, sans aucun résultat.

Dois-je définir quelque chose dans mes paramètres de projet?

+0

Avez-vous essayé de passer de l'horloge de 12 à 24 heures et vice versa? – deanWombourne

Répondre

2

Vérifiez les versions du système d'exploitation que vous utilisez. Il y avait quelques changements faits à NSDateFormatter dans iOS 4. Spécifiquement, il a l'habitude d'ignorer n'importe quel texte dans la chaîne après la date, et renvoie la date. Maintenant, s'il y a des ordures là-dedans, ça revient à zéro. Étant donné que la simulation de l'iPad est en cours d'exécution 3.2, et probablement votre sim iPhone fonctionne 4.0, c'est probablement le problème.

+0

Merci! Il se trouve qu'il y a "\ r \ n" à la fin de la chaîne. Donc, en réalité, la sortie du journal a été répartie sur deux lignes. Je suis très reconnaissant. Cela fonctionne encore. Encore un peu confus pourquoi hier soir c'était bien. Peut-être que je courais le simulateur sur un autre OS. – Sjakelien