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.
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
Dans l'article <slrne2qk33.3ga.stephane_chazelas@duey.spider.com>,
Stephane Chazelas <stephane_chazelas@yahoo.fr> é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
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
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.
Dans l'article <slrne2qk33.3ga.stephane_chazelas@duey.spider.com>,
Stephane Chazelas <stephane_chazelas@yahoo.fr> é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.
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.
Ç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
Vincent Lefevre vient de nous annoncer :
Dans l'article <mn.fcb17d633b0a1c71.51095@merci.beaucoup.con>,
JustMe <pasdespam@merci.beaucoup.con> écrit:
Vincent Lefevre a formulé la demande :
Dans l'article <mn.f9d57d634bd8a613.51095@merci.beaucoup.con>,
JustMe <pasdespam@merci.beaucoup.con> é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 :-)
Ç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
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
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.