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

 C Discussion :

timestamp au 01/01


Sujet :

C

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 210
    Points : 91
    Points
    91
    Par défaut timestamp au 01/01
    Bonjour,
    Petit soucis d'heure local.
    Je cherche à obtenir le timestamp au 01/01 00h00,00 de l'année en cours.

    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
     
    #include <time.h> 
    #include <stdio.h>
    #include <errno.h>
    #include <string.h>
    #include <stdlib.h>
    int main()
    {
    time_t t = time(NULL);
    struct tm tm = *localtime(&t);
    tm.tm_mday = 1;
    tm.tm_mon = 0;  
    tm.tm_hour = 0;
    tm.tm_min = 0;
    tm.tm_sec = 0; 
    time_t timestamp_annee = mktime(&tm);
    printf("timestamp_annee = %ld\n",timestamp_annee);
     
    return(0);
    Cela me donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    timestamp_annee = 1577829600
    soit le 31/12/2019 - 23:00:00 (http://www.timestamp-tool.fr/)
    J'ai donc une petite heure de différence en cette saison (vivement la fin du changement d'heure :-)

    Merci

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par http://www.timestamp-tool.fr/
    Le timestamp représente la quantité de secondes passés depuis le premier janvier de l'année 1970 (début de l'heure UNIX), autrement dit, le timestamp (unix) est le nombre de secondes écoulées depuis le 1er Janvier 1970 à minuit UTC
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre averti
    Homme Profil pro
    très occupé
    Inscrit en
    Juillet 2014
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : très occupé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 137
    Points : 411
    Points
    411
    Par défaut
    Salut,

    Si on ajoute à ton code un affichage de ta struct tm formatée avec asctime après que tu aies appelé mktime, comme ceci :

    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
    #include <time.h>
    #include <stdio.h>
    #include <errno.h>
    #include <string.h>
    #include <stdlib.h>
    int main()
    {
        time_t t = time(NULL);
        struct tm tm = *localtime(&t);
        tm.tm_mday = 1;
        tm.tm_mon = 0;
        tm.tm_hour = 0;
        tm.tm_min = 0;
        tm.tm_sec = 0;
        time_t timestamp_annee = mktime(&tm);
        printf("timestamp_annee = %ld\n",timestamp_annee);
        printf("formatage asctime: %s\n", asctime(&tm));
     
        return(0);
    }
    J'obtiens sur ma machine :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ gcc -Wall sebaaas.c
    $ ./a.out 
    timestamp_annee = 1577829600
    formatage asctime: Tue Dec 31 23:00:00 2019
    Selon le standard tu C, struct tm contient un champ tm_isdst qui peut être mis à une valeur négative, pour forcer mktime à tenter de déterminer si l'heure d'été ou d'hivers est en vigueur à la date et heure spécifiée.

    Avec ce code :

    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
    #include <time.h>
    #include <stdio.h>
    #include <errno.h>
    #include <string.h>
    #include <stdlib.h>
    int main()
    {
        time_t t = time(NULL);
        struct tm tm = *localtime(&t);
        tm.tm_mday = 1;
        tm.tm_mon = 0;
        tm.tm_hour = 0;
        tm.tm_min = 0;
        tm.tm_sec = 0;
        tm.tm_isdst = -1;
        time_t timestamp_annee = mktime(&tm);
        printf("timestamp_annee = %ld\n",timestamp_annee);
        printf("formatage asctime: %s\n", asctime(&tm));
     
        return(0);
    }
    J'obtiens alors :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ gcc -Wall sebaaas.c
    $ ./a.out 
    timestamp_annee = 1577833200
    formatage asctime: Wed Jan  1 00:00:00 2020
    (testé sur Linux Debian Buster, avec gcc 8.3.0 et système réglé sur TZ Europe/Paris)

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 210
    Points : 91
    Points
    91
    Par défaut
    Parfait !

    Merci baucoup

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

Discussions similaires

  1. de char à timestamp
    Par imtinene dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 13/05/2004, 17h01
  2. [struts][validation][Timestamp] comment faire?
    Par anas.rih dans le forum Struts 1
    Réponses: 6
    Dernier message: 16/04/2004, 23h59
  3. Réponses: 4
    Dernier message: 06/02/2004, 16h23
  4. Conversion Timestamp vers varchar
    Par stejutt dans le forum SQL
    Réponses: 4
    Dernier message: 08/01/2004, 08h46
  5. recuperation du mois avec un timestamp
    Par matrxjean1984 dans le forum Requêtes
    Réponses: 3
    Dernier message: 16/10/2003, 14h41

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