Obtenir l'année en cours

muqaddarmuqaddar Administrateur
juin 2011 modifié dans Objective-C, Swift, C, C++ #1
En relisant des classes, je me suis aperçu que j'obtenais l'année courante de deux manières:

NSUInteger currentYear = [[[[NSDate date] description] substringToIndex:4] intValue];


ou

NSCalendar *gregorian = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];<br />NSDateComponents *yearComponents = [gregorian components:NSYearCalendarUnit fromDate:[NSDate date]];<br />NSUInteger currentYear = [yearComponents year];


La première est plus concise.
La deuxième plus propre ?

Comment faites-vous de votre côté ?

Réponses

  • AliGatorAliGator Membre, Modérateur
    juin 2011 modifié #2
    Wow, quand j'ai lu la première j'ai failli vomir !! (J'ai même cru que c'était un débutant qui postait !)
    Tu rigoles j'espère, tu utilises pas la première quand même ? (Et depuis quand on peut se baser sur la "description" d'un objet, méthode qui renvoie des infos pour le débogage en général, pour récupérer une info ?!)

    Sinon dans la 2e pourquoi tu imposes le calendrier grégorien au lieu de prendre le calendrier courant de l'utilisateur ? Bon en même temps il me semble qu'il n'y a que 5 pays qui n'utilisent pas ce calendrier grégorien, mais bon par principe, j'aurais plutôt écrit :
    NSUInteger currentYear = [[[NSCalendar currentCalendar] components:NSYearCalendarUnit fromDate:[NSDate date]] year];
    
    C'est plus générique, non ? (Et quasi aussi concis que ce truc dégoutant que tu proposais en première solution :P)
  • muqaddarmuqaddar Administrateur
    22:50 modifié #3
    dans 1308408439:

    Wow, quand j'ai lu la première j'ai failli vomir !! (J'ai même cru que c'était un débutant qui postait !)
    Tu rigoles j'espère, tu utilises pas la première quand même ? (Et depuis quand on peut se baser sur la "description" d'un objet, méthode qui renvoie des infos pour le débogage en général, pour récupérer une info ?!)


    Hé, ho... justement, ça sert à  ça ce genre de sujet. :)
    Parfois on utilise des bouts de code qui ont plusieurs années... ;-)

    OK pour la forme concise de la seconde. 
Connectez-vous ou Inscrivez-vous pour répondre.