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