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

Mathématiques Discussion :

Conversion de date


Sujet :

Mathématiques

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 89
    Points : 56
    Points
    56
    Par défaut Conversion de date
    Bonjour à tous,

    J'ai un entier qui représente le nombre de secondes depuis premier janvier 1970.

    Je souhaiterais convertir en format string c'est a dire jj / mm / aaaa

    Qui connais l'algorithme pour faire cette conversion ?

  2. #2
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Citation Envoyé par jeanmy Voir le message
    J'ai un entier qui représente le nombre de secondes depuis premier janvier 1970.
    Il s'agit donc d'un POSIX timestamp (aussi appelé Unix Time, ou epoch seconds)

    Je souhaiterais convertir en format string c'est a dire jj / mm / aaaa

    Qui connais l'algorithme pour faire cette conversion ?
    Etant donné que c'est le temps utilisé sous Unix, le plus simple c'est de regarder la méthode utilisée dans les systèmes Unix (généralement dans le fichier "gmtime.c")

    Code C : 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
    #include <time.h>
    #include "gmtime.h"
     
    #define YEAR0           1900                    /* the first year */
    #define EPOCH_YR        1970            /* EPOCH = Jan 1 1970 00:00:00 */
    #define SECS_DAY        (24L * 60L * 60L)
    #define LEAPYEAR(year)  (!((year) % 4) && (((year) % 100) || !((year) % 400)))
    #define YEARSIZE(year)  (LEAPYEAR(year) ? 366 : 365)
    #define FIRSTSUNDAY(timp)       (((timp)->tm_yday - (timp)->tm_wday + 420) % 7)
    #define FIRSTDAYOF(timp)        (((timp)->tm_wday - (timp)->tm_yday + 420) % 7)
    #define TIME_MAX        ULONG_MAX
    #define ABB_LEN         3
     
    const int _ytab[2][12] = {
            { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
            { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
    };
     
    struct tm * gmtime(register const time_t *timer)
    {
            static struct tm br_time;
            register struct tm *timep = &br_time;
            time_t time = *timer;
            register unsigned long dayclock, dayno;
            int year = EPOCH_YR;
     
            dayclock = (unsigned long)time % SECS_DAY;
            dayno = (unsigned long)time / SECS_DAY;
     
            timep->tm_sec = dayclock % 60;
            timep->tm_min = (dayclock % 3600) / 60;
            timep->tm_hour = dayclock / 3600;
            timep->tm_wday = (dayno + 4) % 7;       /* day 0 was a thursday */
            while (dayno >= YEARSIZE(year)) {
                    dayno -= YEARSIZE(year);
                    year++;
            }
            timep->tm_year = year - YEAR0;
            timep->tm_yday = dayno;
            timep->tm_mon = 0;
            while (dayno >= _ytab[LEAPYEAR(year)][timep->tm_mon]) {
                    dayno -= _ytab[LEAPYEAR(year)][timep->tm_mon];
                    timep->tm_mon++;
            }
            timep->tm_mday = dayno + 1;
            timep->tm_isdst = 0;
     
            return timep;
    }

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 89
    Points : 56
    Points
    56
    Par défaut
    En faite, c'est de la programmation en script que je veux faire.

    J'ai un pupitre Pro-face. je dois allé une variable dans un automate Schenider et affiché en format date/heure.

  4. #4
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 814
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 814
    Points : 7 642
    Points
    7 642
    Par défaut
    Salut

    Citation Envoyé par jeanmy Voir le message
    Qui connais l'algorithme pour faire cette conversion ?
    J'aurais tendance à dire qu'une année, c'est 365 jours*24 heures*60 minutes*60 secondes... tu rajoutes un jour pour les années bissextiles... ça va te donner l'année en cours, et le nombre de secondes depuis le début de l'année.
    Reste plus qu'à diviser par 24*60*60 pour savoir quel jour de l'année on est...

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 89
    Points : 56
    Points
    56
    Par défaut
    Merci pseudocode

    J'ai adapté ta fonction avec mon langage D-script. Et cela marche bien

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

Discussions similaires

  1. Conversion de date
    Par jdu dans le forum Access
    Réponses: 2
    Dernier message: 26/01/2005, 16h17
  2. Conversion de dates
    Par Gogoye dans le forum Modules
    Réponses: 5
    Dernier message: 10/08/2004, 11h39
  3. - [CAST ou CONVERT] Problème de conversion de date
    Par Boublou dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 06/07/2004, 14h31
  4. Conversion de date lors d'un import
    Par bilbon.S dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 26/03/2004, 14h33
  5. Conversion de date et division 64 bits
    Par dway dans le forum Assembleur
    Réponses: 38
    Dernier message: 27/01/2004, 10h31

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