Re: timestamp

Page principale

Répondre à ce message
Auteur: Edgar Bonet
Date:  
À: Liste Guilde
Sujet: Re: timestamp
Marc Berlioux a écrit :
> avec quel outil generer un timestamp à partir d'une date-heure
> et pour ressortir une date-heure d'un timestamp ?


Et dans un autre message il a précisé :
> je cherchais un outil shell.
>
> j'ai depuis trouvé que la commande "date +%s" fait le boulot dans un
> sens. Peut-être même dans l'autre, j'ai pas encore lu tout le manuel.


Si tu avais précisé tout de suite, ça aurait été plus facile.
Franchement, ton premier message est incompréhensible. « timestamp » est
un mot très vague. Typiquement ça peut être un fichier vide que tu crées
pour marquer une date (genre "touch timestamp; autres commandes; find .
-newer timestamp). Quand à date-heure, je n'en ai jamais entendu parler,
bien que ça évoque la struct tm de la libc.

Pour répondre à ta question, voici en bash l'inverse de "date +%s" :

    seconds2date() {
        local s=$1
        shift
        date -d "1970-01-01 00:00 UTC + $s seconds" $*
    }


Exemple d'utilisation :

    $ date +%s
    1139339718
    $ seconds2date 1139339718
    Tue Feb  7 20:15:18 CET 2006
    $ seconds2date 1139339718 --rfc-2822    # format des e-mails
    Tue, 07 Feb 2006 20:15:18 +0100


> Dans les 2 sens, il y des fonctions en C décrites ici :
> http://www.htdb.org/htdb/docs/scripting/functions/datetime.html


Rendre ton code dépendant de HTDB juste pour convertir entre struct tm
et time_t (mais c'est peut-être pas ce que tu veux...) me semble un peu
aberrant. Arnaud Lecca t'a déjà indiqué la bonne solution en C : info
libc. Plus précisément les fonctions localtime() et mktime(). Si ce qui
t'intéresse c'est des représentations en chaîne de caractères, regarde
par exemple strftime() et getdate().

Bonne nuit,

Edgar.

-- 
Edgar Bonet           Maison : 04 76 21 29 16    Bureau : 04 76 88 10 96
3 rue Jean Prévost    Mobile : 06 77 19 79 39    Fax    : 04 76 88 11 91
38000 Grenoble        guilde@???     www.edgar-bonet.org