2011-11-11 6 views
0

Je suis confronté à un problème bizarre avec NSDate, lorsque je tente chercher une date à partir de l'appareil, parfois, il montre mois précédent pour certaines versionsComment obtenir la date actuelle du périphérique?

Voici mon morceau de code pour référence

NSDate *date = [NSDate date]; 
    NSDateFormatter *dateF = [[NSDateFormatter alloc]init]; 
    [dateF setDateFormat:@" dd.MM.yyyy "]; 
    NSString *selectedDate = [dateF stringFromDate:date]; 

Toutes les entrées sont apprécié, Merci

+0

Cela a donné le bon résultat quand je l'ai juste couru. Que voulez-vous dire par "certaines versions?" –

+0

Vous devez définir les paramètres régionaux et le fuseau horaire de votre formateur, pour être sûr qu'il ne prend pas quelque chose de bizarre par défaut. Mais cela ne rendrait pas compte du mois qui passe - la seule raison logique pour cela serait de spécifier accidentellement "mm" pour le mois plutôt que "MM". –

Répondre

3

Pour éviter les problèmes plus tard localisant vous pouvez utiliser NSCalendar et sa méthode components:fromDate:

Quelque chose comme ceci:

NSCalendar * calendar = [NSCalendar currentCalendar]; 
NSDateComponents * components = [calendar components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit 
              fromDate:[NSDate date]]; 
NSString * stringDate = [NSString stringWithFormat:@"%d.%d.%d", components.day, components.month, components.year]; 
2
 NSDate *today = [NSDate date]; 
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat:@"hh:mma dd/MMM"]; 
NSString *dateString = [dateFormat stringFromDate:today]; 
NSLog(@"date: %@", dateString); 
[dateFormat release]; 
0

Voici un exemple par Apple il semble que vous avez votre minuscules en majuscules/droite

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd 'at' HH:mm"]; 

Êtes-vous sûr de la date de votre appareil est réglé à droite? Avez-vous essayé de définir les paramètres régionaux de NSDateFormatter?

EDIT:

Pour vous répondent à la question dans les commentaires: NSDate est un point dans le temps indépendamment des fuseaux horaires, des calendriers, etc. ainsi de suite. NSCalendar et NSDateFormatter vous permettent de convertir ce point dans le temps en une représentation correcte dans un fuseau horaire donné, avec un calendrier donné.

Questions connexes