OVH Cloud OVH Cloud

Récupérer la date de la veille

27 réponses
Avatar
SDC
Bonjour,

Je cherche =E0 r=E9cup=E9rer la date de la veille sous la forme "%Y-%m-%d"
(formatage =E0 la "strftime") avec les commandes standard fournies avec
Solaris 8. Sous Linux, il y a "date -d yesterday '+%Y-%m-%d'" mais
l'option "-d" de "date" n'existe pas sous Solaris 8.

Pour l'instant j'ai :

gawk 'BEGIN { print strftime("%Y-%m-%d",
int(systime()/86400)*86400-7202) }'
# systime() =3D nombre de secondes depuis Epoch
# int(systime()/86400)*86400 =3D aujourd'hui =E0 01:00:00 ou 02:00:00
# int(systime()/86400)*86400-7202 =3D hier =E0 22:59:58 ou 23:59:58

Mais cela ne fonctionne qu'en Central European Time, et j'aimerai
quelque chose qui marche partout.

-Sylvain

7 réponses

1 2 3
Avatar
JustMe
Vincent Lefevre a formulé la demande :
Dans l'article ,
JustMe écrit:

Vincent Lefevre avait prétendu :

Ça ne fonctionne peut-être pas lorsque le changement de date se
produit au moment de l'exécution du script.


Je pense que si car les TZ en GMT ne gerent pas de DST


Je ne vois pas le rapport avec le DST.


DSTÚyligth Saving Time ==>Chgt d'heure

Mon truc calcul l'ecart courant avec la GMT et prend la date de la
veille par rapport au GMT

Comme le decalage est d'une heure et a lieu apres 1h du mat et avant
23h : aucun risque de collision



Avatar
Vincent Lefevre
Dans l'article ,
Arnaud Launay écrit:

Ok. Je corrige, alors.

~ $ TZ=GMT date -d yesterday
Thu Mar 30 15:40:41 GMT 2006


Non, taper ceci à 0h30 heure locale en France, donne une date deux jours
avant.

--
Vincent Lefèvre - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / SPACES project at LORIA

Avatar
Vincent Lefevre
Dans l'article ,
JustMe écrit:

Vincent Lefevre a formulé la demande :
Dans l'article ,
JustMe écrit:

Vincent Lefevre avait prétendu :

Ça ne fonctionne peut-être pas lorsque le changement de date se
produit au moment de l'exécution du script.


Je pense que si car les TZ en GMT ne gerent pas de DST


Je ne vois pas le rapport avec le DST.


DSTÚyligth Saving Time ==>Chgt d'heure

Mon truc calcul l'ecart courant avec la GMT et prend la date de la
veille par rapport au GMT

Comme le decalage est d'une heure et a lieu apres 1h du mat et avant
23h : aucun risque de collision


J'ai parlé du changement de date (à minuit), pas du changement d'heure.

--
Vincent Lefèvre - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / SPACES project at LORIA




Avatar
Vincent Lefevre
Dans l'article ,
Stephane Chazelas écrit:

Ca doit dependre de la version de GNU date alors.


dixsept:~> date --version
date (GNU coreutils) 5.94

Deja, celle a laquelle j'ai acces (sh-utils 1.16) ne marche pas
avec yesterday, car yesterday est un multiplicatif, il faut date
-d '1 yesterday' or date -d '-1 day'.

Ensuite:

~$ LD_PRELOAD=./a.out TIME62164600 /usr/gnu/bin/date
Sun Oct 29 23:30:00 GMT 2006
~$ LD_PRELOAD=./a.out TIME=$((1162164600 - 24 * 3600)) /usr/gnu/bin/date
Sun Oct 29 00:30:00 BST 2006
~$ LD_PRELOAD=./a.out TIME62164600 /usr/gnu/bin/date -d '-1 day'
Sat Oct 28 23:30:00 BST 2006
~$ LD_PRELOAD=./a.out TIME=$((1162164600 - 25 * 3600)) /usr/gnu/bin/date
Sat Oct 28 23:30:00 BST 2006

En l'occurrence, "-1 day", ca fait 25 heures.


C'est quoi ton a.out?

--
Vincent Lefèvre - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / SPACES project at LORIA

Avatar
Vincent Lefevre
Dans l'article ,
Stephane Chazelas écrit:

En l'occurrence, "-1 day", ca fait 25 heures.


Ah, je n'avais pas lu toute la doc:

When a relative item causes the resulting date to cross a boundary
where the clocks were adjusted, typically for daylight saving time, the
resulting date and time are adjusted accordingly.

Je ne trouve pas ça intuitif: cela veut dire que "10 minutes ago'
peut donner des résultats surprenants, par exemple.

--
Vincent Lefèvre - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / SPACES project at LORIA

Avatar
JustMe
Vincent Lefevre vient de nous annoncer :
Dans l'article ,
JustMe écrit:

Vincent Lefevre a formulé la demande :
Dans l'article ,
JustMe écrit:

Vincent Lefevre avait prétendu :

Ça ne fonctionne peut-être pas lorsque le changement de date se
produit au moment de l'exécution du script.
Je pense que si car les TZ en GMT ne gerent pas de DST



Je ne vois pas le rapport avec le DST.


DSTÚyligth Saving Time ==>Chgt d'heure

Mon truc calcul l'ecart courant avec la GMT et prend la date de la
veille par rapport au GMT

Comme le decalage est d'une heure et a lieu apres 1h du mat et avant
23h : aucun risque de collision


J'ai parlé du changement de date (à minuit), pas du changement d'heure.


Ah, ok si le script commence à 23:59:59. Oui exact :-)

on va rajouter si heure = 23:59:59 sleep 60 :-D





Avatar
Stephane Chazelas
2006-03-31, 19:54(+00), Vincent Lefevre:
[...]
~$ LD_PRELOAD=./a.out TIME62164600 /usr/gnu/bin/date
Sun Oct 29 23:30:00 GMT 2006
~$ LD_PRELOAD=./a.out TIME=$((1162164600 - 24 * 3600)) /usr/gnu/bin/date
Sun Oct 29 00:30:00 BST 2006
~$ LD_PRELOAD=./a.out TIME62164600 /usr/gnu/bin/date -d '-1 day'
Sat Oct 28 23:30:00 BST 2006
~$ LD_PRELOAD=./a.out TIME=$((1162164600 - 25 * 3600)) /usr/gnu/bin/date
Sat Oct 28 23:30:00 BST 2006

En l'occurrence, "-1 day", ca fait 25 heures.


C'est quoi ton a.out?


Un truc qui remplace time() par une fonction qui retourne la
valeur de la variable d'environnement TIME.

--
Stéphane


1 2 3