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

Bases de données Discussion :

Conversion avec QTimeZone


Sujet :

Bases de données

  1. #1
    Membre actif
    Avatar de katanaenmousse
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 220
    Points : 232
    Points
    232
    Par défaut Conversion avec QTimeZone
    Bonjour,
    je rencontre un problème avec une base de données que je gere avec Qt.

    Je reçois des données de plusieurs pays avec des timezones différentes

    je voudrai convertir toutes les heures de ces différentes zone en heure UTC avant de les integrer en base.

    Avez vous des exemples à me donner?

    merci à vous
    KatanaEnMousse
    Une fois qu'une réponse qui vous convient a été trouvée à votre sujet, pensez à le mettre en résolu.

  2. #2
    Membre actif
    Avatar de katanaenmousse
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 220
    Points : 232
    Points
    232
    Par défaut
    Bon je vous donne la réponse
    enfin je vous ai fait un petit programme exemple en console
    il vous donne les differentes timezone
    et comment convertir les heures selon les fuseaux
    voila j espere que ce petit programme tuto aidera quelques uns.
    Bises


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    #include <QCoreApplication> 
    #include <QDebug> 
    #include <QDateTime> 
    #include <QTimeZone> 
    #include <QString> 
    int main(int argc, char*argv[]) { 
    QCoreApplication a(argc,argv); 
    qDebug()<<"test QTimeZone"; 
    QString dateheure("30/08/2016 23:55:10"); 
    //pour obtenir la liste des ids de TimeZone: 
    QTimeZone TZ; //creer une QTimeZone (ici elle est vide et Invalide) 
    qDebug()<<"Listing des Ids de QTimeZone: /n"<<TZ.availableTimeZoneIds(); 
    
    //converti QString en QDateTime 
    QDateTime DT=QDateTime::fromString(dateheure,"dd/MM/yyyy HH:mm:ss"); 
    //affiche le QDateTime Brut sans mise en forme QString 
    qDebug()<<"QDateTimebrut"<<DT; 
    //converti QDateTime en QString yyyy/MM/dd-HH.mm.ss 
    qDebug()<<"DATE INITIALE HEURE LOCALE:"<<DT.toString("dd/MM/yyyy HH:mm:ss"); 
    //converti en heure locale puis en QString
     QDateTime DTLOCAL=DT.toLocalTime(); 
    qDebug()<<"Convertion en heure locale:"<<DTLOCAL.toString("yyyy-MM-dd HH:mm:ss"); 
    
    //UTC puis QString 1ere technique 
    QDateTime DTUTC1=DT.toTimeSpec(Qt::UTC); 
    qDebug()<<"1e conversion en heure UTC:"<<DTUTC1.toString("yyyy/MM/dd-HH.mm.ss"); 
    //converti en heure UTC puis en QString 2eme technique
     QDateTime DTUTC2=DT.toUTC(); 
    qDebug()<<"2e converstion en heure UTC:"<<DTUTC2.toString("yyyy/MM/dd-HH.mm.ss"); 
    
    //CONVERSION DANS DAUTRES TIMEZONE 
    //il faut d'abord creer un QByteArray contenant l'id de la TimeZone 
    QByteArrayid TZLondre("Europe/London");  
    //puis creer la QTimeZone correspondante 
    QTimeZone TZLondre(idTZLondre);
     qDebug()<<"Convertion heure de Londre:"<<DT.toTimeZone(TZLondre); 
    qDebug()<<"TimeZone du System ne change pas:"<<TZLondre.systemTimeZoneId(); 
    //même chose avec Melbourne 
    QByteArray idTZMelbourne("Australia/Melbourne"); 
    QTimeZone TZMelbourne(idTZMelbourne); 
    qDebug()<<"convertion heure Melbourne:"<<DT.toTimeZone(TZMelbourne); 
    qDebug()<<"Time Zone du System ne change pas:"<<TZMelbourne.systemTimeZoneId(); 
    return a.exec(); 
    }
    KatanaEnMousse
    Une fois qu'une réponse qui vous convient a été trouvée à votre sujet, pensez à le mettre en résolu.

  3. #3
    Membre actif
    Avatar de katanaenmousse
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 220
    Points : 232
    Points
    232
    Par défaut
    j ai oublié de faire une démo pour le principal :
    entrer une date heure d un fuseau quelconque ou en UTC pour le convertir en UTC ou dans un autre fuseau ensuite
    voici le code modifié (voir la fin)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    
    #include <QCoreApplication> 
    #include <QDebug> 
    #include <QDateTime> 
    #include <QTimeZone> 
    #include <QString> 
    int main(int argc, char*argv[]) { 
    QCoreApplication a(argc,argv); 
    qDebug()<<"test QTimeZone"; 
    QString dateheure("30/08/2016 23:55:10"); 
    //pour obtenir la liste des ids de TimeZone: 
    QTimeZone TZ; //creer une QTimeZone (ici elle est vide et Invalide) 
    qDebug()<<"Listing des Ids de QTimeZone: /n"<<TZ.availableTimeZoneIds(); 
    
    //converti QString en QDateTime 
    QDateTime DT=QDateTime::fromString(dateheure,"dd/MM/yyyy HH:mm:ss"); 
    //affiche le QDateTime Brut sans mise en forme QString 
    qDebug()<<"QDateTimebrut"<<DT; 
    //converti QDateTime en QString yyyy/MM/dd-HH.mm.ss 
    qDebug()<<"DATE INITIALE HEURE LOCALE:"<<DT.toString("dd/MM/yyyy HH:mm:ss"); 
    //converti en heure locale puis en QString
     QDateTime DTLOCAL=DT.toLocalTime(); 
    qDebug()<<"Convertion en heure locale:"<<DTLOCAL.toString("yyyy-MM-dd HH:mm:ss"); 
    
    //UTC puis QString 1ere technique 
    QDateTime DTUTC1=DT.toTimeSpec(Qt::UTC); 
    qDebug()<<"1e conversion en heure UTC:"<<DTUTC1.toString("yyyy/MM/dd-HH.mm.ss"); 
    //converti en heure UTC puis en QString 2eme technique
     QDateTime DTUTC2=DT.toUTC(); 
    qDebug()<<"2e converstion en heure UTC:"<<DTUTC2.toString("yyyy/MM/dd-HH.mm.ss"); 
    
    //CONVERSION DANS DAUTRES TIMEZONE 
    //il faut d'abord creer un QByteArray contenant l'id de la TimeZone 
    QByteArrayid TZLondre("Europe/London");  
    //puis creer la QTimeZone correspondante 
    QTimeZone TZLondre(idTZLondre);
     qDebug()<<"Convertion heure de Londre:"<<DT.toTimeZone(TZLondre); 
    qDebug()<<"TimeZone du System ne change pas:"<<TZLondre.systemTimeZoneId(); 
    //même chose avec Melbourne 
    QByteArray idTZMelbourne("Australia/Melbourne"); 
    QTimeZone TZMelbourne(idTZMelbourne); 
    qDebug()<<"convertion heure Melbourne:"<<DT.toTimeZone(TZMelbourne); 
    qDebug()<<"Time Zone du System ne change pas:"<<TZMelbourne.systemTimeZoneId(); 
    
       // A Partir d ici on rentre l'heure comme étant celle de Melbourne et non plus comme heure locale 
    QDateTime DTMelbourne = QDateTime::fromString(dateheure,"dd/MM/yyyyHH:mm:ss"); 
    QByteArray idTZMelb("Australia/Melbourne"); 
    QTimeZone TZMelb(idTZMelb); 
    DTMelbourne.setTimeZone(TZMelb);
     qDebug()<<"heure rentrante de Melbourne:"<<DTMelbourne.toString("yyyy-MM-ddHH.mm.ss"); 
    qDebug()<<"heure UTC"<<DTMelbourne.toUTC().toString("yyyy-MM-ddHH.mm.ss"); 
    qDebug()<<DTMelbourne; 
    
    //Maintenant on rentre l heure comme étant l heure UTC 
    QDateTime DTUTC=QDateTime::fromString(dateheure,"dd/MM/yyyyHH:mm:ss"); 
    QByteArray idTZUTC("UTC"); 
    QTimeZone TZUTC(idTZUTC); 
    DTUTC.setTimeZone(TZUTC); //ouDTUTC.setTimeSpec(Qt::UTC);
     qDebug()<<"heure rentrante UTC:"<<DTUTC.toString("yyyy-MM-ddHH.mm.ss");
     qDebug()<<"heure UTC"<<DTUTC.toUTC().toString("yyyy-MM-ddHH.mm.ss"); 
    qDebug()<<DTUTC;
    return a.exec(); 
    }
    KatanaEnMousse
    Une fois qu'une réponse qui vous convient a été trouvée à votre sujet, pensez à le mettre en résolu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Conversion avec trang
    Par Linaa dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 31/03/2006, 13h42
  2. Souci de conversion avec XMLHttpRequest
    Par Christophe Charron dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 18/03/2006, 13h19
  3. Problème de conversion avec CONVERT
    Par gowser dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 13/12/2005, 16h48
  4. Conversion avec template
    Par indy2 dans le forum Langage
    Réponses: 10
    Dernier message: 23/03/2005, 00h02
  5. Réponses: 5
    Dernier message: 12/01/2005, 20h58

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