IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Objective-C Discussion :

initialiser NSDatePicker avec une NSString


Sujet :

Objective-C

  1. #1
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Février 2007
    Messages : 97
    Points : 56
    Points
    56
    Par défaut initialiser NSDatePicker avec une NSString
    Bonjour,

    Je voudrais initialiser un NSDatePicker (single date, qui affiche uniquement l'heure) avec une NSString de la forme @"00:00:00"

    Je n'y arrive pas du tout. Visiblement le NSDatePicker considère ma chaine comme une heure GMT et s'obstine à me la convertir.
    00:00:00 devient 01:00:00 et quand on passera à l'heure d'été ça deviendra 02:00:00

    C'est très énervant. Y-a-t-il un moyen d'éviter cette conversion?

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    Par défaut
    Lisez la doc de NSDatePicker et regardez toutes les méthodes qui sont susceptibles de modifier l'interprétation des dates et heures comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    - (void)setTimeZone:(NSTimeZone *)newTimeZone
    - (void)setLocale:(NSLocale *)newLocale
    - (void)setCalendar:(NSCalendar *)newCalendar
    sans oublier que NSDate aussi permet de gérer la TZ…

  3. #3
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Février 2007
    Messages : 97
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par JeitEmgie Voir le message
    Lisez la doc de NSDatePicker et regardez toutes les méthodes qui sont susceptibles de modifier l'interprétation des dates et heures comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    - (void)setTimeZone:(NSTimeZone *)newTimeZone
    - (void)setLocale:(NSLocale *)newLocale
    - (void)setCalendar:(NSCalendar *)newCalendar
    sans oublier que NSDate aussi permet de gérer la TZ…
    Merci, mais très honnêtement, je crois avoir tout essayé. Si vous avez un bout de code, je suis preneur.

    Pour bien illustrer mon problème voici un bout de code facilement testable:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
        NSString *heureChantier = @"00:00:00";
     
        NSString *chaineDate = [[NSDate date] descriptionWithCalendarFormat: @"%Y-%m-%d" timeZone:nil locale:[[NSUserDefaults standardUserDefaults] dictionaryRepresentation]];
     
        chaineDate = [chaineDate stringByAppendingString:@" "];
        chaineDate = [chaineDate stringByAppendingString:heureChantier];
        chaineDate = [chaineDate stringByAppendingString:@" +0000"];	
     
     
        NSDate *maDate = [[NSDate alloc] initWithString:chaineDate]; 
     
     
        [horloge setDateValue:maDate]; //horloge étant donc mon NSDatePicker

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    Par défaut
    Citation Envoyé par Rocou Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        NSString *heureChantier = @"00:00:00";
        
        NSString *chaineDate = [[NSDate date] descriptionWithCalendarFormat: @"%Y-%m-%d" timeZone:nil locale:[[NSUserDefaults standardUserDefaults] dictionaryRepresentation]];
        
        chaineDate = [chaineDate stringByAppendingString:@" "];
        chaineDate = [chaineDate stringByAppendingString:heureChantier];
        chaineDate = [chaineDate stringByAppendingString: [[NSDate date] descriptionWithCalendarFormat: @"%z" timeZone:nil locale:[[NSUserDefaults standardUserDefaults] dictionaryRepresentation]]   ];
    
    "+0000" c'est la TZ GMT !
    "%z" vous donnera la timezone sélectionnée par l'utilisateur

  5. #5
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Février 2007
    Messages : 97
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par JeitEmgie Voir le message
    "+0000" c'est la TZ GMT !
    "%z" vous donnera la timezone sélectionnée par l'utilisateur
    Ha! Merci. Il me semblait pourtant avoir essayé cela.

    Encore merci!

    Cela dit, existe-t-il une solution pour "tromper" NSDatePicker et fonctionner en TimeZone GMT? (à part modifier ses paramètres systèmesbien entendu)

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    Par défaut
    Citation Envoyé par Rocou Voir le message
    Ha! Merci. Il me semblait pourtant avoir essayé cela.

    Encore merci!

    Cela dit, existe-t-il une solution pour "tromper" NSDatePicker et fonctionner en TimeZone GMT? (à part modifier ses paramètres systèmesbien entendu)
    Il n'y a pas à tromper NSDatePicker : ce n'est qu'un objet d'interface
    c'est à vous à exprimer dans votre UI que vous saisissez une date dans une TZ particulière si ce n'est pas la TZ dans laquelle se trouve l'utilisateur, et à convertir dans la TZ que vous désirez utiliser pour votre stockage.

Discussions similaires

  1. Initialiser une DropDownList avec une énumération
    Par rozwel dans le forum ASP.NET
    Réponses: 2
    Dernier message: 05/04/2007, 13h52
  2. [1.1] Comment initialiser un XmlTextReader avec une String ?
    Par fregolo52 dans le forum Framework .NET
    Réponses: 2
    Dernier message: 18/09/2006, 14h11
  3. Réponses: 6
    Dernier message: 04/09/2006, 15h48
  4. Initialiser un champ texte avec une fonction javascript
    Par Agoye dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/06/2006, 11h26
  5. Comment initialiser une liste de composants avec une boucle ?
    Par EricSid dans le forum Composants VCL
    Réponses: 5
    Dernier message: 06/04/2005, 18h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo