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.
Je cherche à récupérer la date de la veille sous la forme "%Y-%m-%d" (formatage à 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() = nombre de secondes depuis Epoch # int(systime()/86400)*86400 = aujourd'hui à 01:00:00 ou 02:00:00 # int(systime()/86400)*86400-7202 = hier à 22:59:58 ou 23:59:58
Mais cela ne fonctionne qu'en Central European Time, et j'aimerai quelque chose qui marche partout. [...]
Sinon, utiliser les fonctions sh POSIX (utiliser /usr/xpg4/bin/sh sous Solaris) a http://stchaz.free.fr/wide_strftime.sh
Ou faire le calcul a la main ou aller voir du coté de la FAQ de comp.unix.shell
-- Stephane
On 27 Mar 2006 00:22:52 -0800, SDC wrote:
Bonjour,
Je cherche à récupérer la date de la veille sous la forme "%Y-%m-%d"
(formatage à 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() = nombre de secondes depuis Epoch
# int(systime()/86400)*86400 = aujourd'hui à 01:00:00 ou 02:00:00
# int(systime()/86400)*86400-7202 = hier à 22:59:58 ou 23:59:58
Mais cela ne fonctionne qu'en Central European Time, et j'aimerai
quelque chose qui marche partout.
[...]
Je cherche à récupérer la date de la veille sous la forme "%Y-%m-%d" (formatage à 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() = nombre de secondes depuis Epoch # int(systime()/86400)*86400 = aujourd'hui à 01:00:00 ou 02:00:00 # int(systime()/86400)*86400-7202 = hier à 22:59:58 ou 23:59:58
Mais cela ne fonctionne qu'en Central European Time, et j'aimerai quelque chose qui marche partout. [...]
Non, c'est "hour = -12" (ca n'enleve pas 12h a l'heure courante), donc midi (ou eventuellement (peut-etre) 11h ou 13h si ya eu un changement d'heure) la veille.
De plus, que se passe-t-il si le '-12' ou le '-24' amène sur une heure qui n'existe pas (par exemple au moment du changement d'heure été/hiver) ?
Voir plus haut.
Juste pour le fun, voici une instruction (qui, entre autres, souffre du même défaut) pour afficher la date du lendemain :
sleep 86400; date
plutot:
date=$(date); sleep 86400; printf '%sn' "$date"
-- Stephane
On Mon, 27 Mar 2006 18:50:31 +0200, Paul Gaborit wrote:
À (at) 27 Mar 2006 16:28:48 GMT,
Stephane Chazelas <stephane_chazelas@yahoo.fr> écrivait (wrote):
Non, c'est "hour = -12" (ca n'enleve pas 12h a l'heure
courante), donc midi (ou eventuellement (peut-etre) 11h ou 13h
si ya eu un changement d'heure) la veille.
De plus, que se passe-t-il si le '-12' ou le '-24' amène sur une heure
qui n'existe pas (par exemple au moment du changement d'heure
été/hiver) ?
Voir plus haut.
Juste pour le fun, voici une instruction (qui, entre autres,
souffre du même défaut) pour afficher la date du lendemain :
Non, c'est "hour = -12" (ca n'enleve pas 12h a l'heure courante), donc midi (ou eventuellement (peut-etre) 11h ou 13h si ya eu un changement d'heure) la veille.
De plus, que se passe-t-il si le '-12' ou le '-24' amène sur une heure qui n'existe pas (par exemple au moment du changement d'heure été/hiver) ?
Voir plus haut.
Juste pour le fun, voici une instruction (qui, entre autres, souffre du même défaut) pour afficher la date du lendemain :
sleep 86400; date
plutot:
date=$(date); sleep 86400; printf '%sn' "$date"
-- Stephane
Harpo
Paul Gaborit wrote:
Juste pour le fun, voici une instruction (qui, entre autres, souffre du même défaut) pour afficher la date du lendemain :
sleep 86400; date
Le problème est que sleep n'accepte pas de nombre négatif.
;-)
idem
Mais que se passe-t-il en cas de changement d'heure... ?
Paul Gaborit wrote:
Juste pour le fun, voici une instruction (qui, entre autres,
souffre du même défaut) pour afficher la date du lendemain :
sleep 86400; date
Le problème est que sleep n'accepte pas de nombre négatif.
;-)
idem
Mais que se passe-t-il en cas de changement d'heure... ?
Juste pour le fun, voici une instruction (qui, entre autres, souffre du même défaut) pour afficher la date du lendemain :
sleep 86400; date
Le problème est que sleep n'accepte pas de nombre négatif.
;-)
idem
Mais que se passe-t-il en cas de changement d'heure... ?
JustMe
Il se trouve que SDC a formulé :
Bonjour,
Je cherche à récupérer la date de la veille sous la forme "%Y-%m-%d" (formatage à 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() = nombre de secondes depuis Epoch # int(systime()/86400)*86400 = aujourd'hui à 01:00:00 ou 02:00:00 # int(systime()/86400)*86400-7202 = hier à 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
ca doit marcher à toute heure de la journee ou slt à un moment precis ?
Il se trouve que SDC a formulé :
Bonjour,
Je cherche à récupérer la date de la veille sous la forme "%Y-%m-%d"
(formatage à 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() = nombre de secondes depuis Epoch
# int(systime()/86400)*86400 = aujourd'hui à 01:00:00 ou 02:00:00
# int(systime()/86400)*86400-7202 = hier à 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
ca doit marcher à toute heure de la journee ou slt à un moment precis ?
Je cherche à récupérer la date de la veille sous la forme "%Y-%m-%d" (formatage à 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() = nombre de secondes depuis Epoch # int(systime()/86400)*86400 = aujourd'hui à 01:00:00 ou 02:00:00 # int(systime()/86400)*86400-7202 = hier à 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
ca doit marcher à toute heure de la journee ou slt à un moment precis ?
SDC
Il faudrait que ça fonctionne à tout moment de la journée.
Il faudrait que ça fonctionne à tout moment de la journée.
Ca devrait donner l'avant-dernier jour du mois precedent (le jour -1 du mois courant, 0 etant le dernier jour du mois precedent). Si tu veux la veille, c'est pas la meme chose, c'est ce que j'ai indiqué dans mon message.
Nous sommes le 28 mars, en remplaçant le -1 par -28, on obtiens bien le 31 janvier.
Le -28 du mois de mars ca doit etre en gros le 31 janvier, oui.
Si tu veux la veille sans utiliser -12 pour l'heure (mais je ne vois pas pourquoi), alors, ca serait plutot:
Ca devrait donner l'avant-dernier jour du mois precedent (le
jour -1 du mois courant, 0 etant le dernier jour du mois
precedent). Si tu veux la veille, c'est pas la meme chose, c'est
ce que j'ai indiqué dans mon message.
Nous sommes le 28 mars, en remplaçant le -1 par -28, on obtiens bien
le 31 janvier.
Le -28 du mois de mars ca doit etre en gros le 31 janvier, oui.
Si tu veux la veille sans utiliser -12 pour l'heure (mais je ne
vois pas pourquoi), alors, ca serait plutot:
Ca devrait donner l'avant-dernier jour du mois precedent (le jour -1 du mois courant, 0 etant le dernier jour du mois precedent). Si tu veux la veille, c'est pas la meme chose, c'est ce que j'ai indiqué dans mon message.
Nous sommes le 28 mars, en remplaçant le -1 par -28, on obtiens bien le 31 janvier.
Le -28 du mois de mars ca doit etre en gros le 31 janvier, oui.
Si tu veux la veille sans utiliser -12 pour l'heure (mais je ne vois pas pourquoi), alors, ca serait plutot:
Je l'ai écrite en pensant que -1 voulait dire -1 jour par rapport à la date d'aujourd'hui (et non -1 du mois en cours). J'ai même testé, mais j'ai lu trop vite le résultat... Ca donnait bien le 27, mais le 27 février (et non mars)... Si j'avais essayé ça hier, j'aurai vu mon erreur tout de suite...
OK pour la proposition avec -12 heures, mais pourquoi -12 et pas -1, -2 ou -18 ?
Je l'ai écrite en pensant que -1 voulait dire -1 jour par rapport à
la date d'aujourd'hui (et non -1 du mois en cours). J'ai même testé,
mais j'ai lu trop vite le résultat... Ca donnait bien le 27, mais le
27 février (et non mars)... Si j'avais essayé ça hier, j'aurai vu
mon erreur tout de suite...
OK pour la proposition avec -12 heures, mais pourquoi -12 et pas -1, -2
ou -18 ?
Je l'ai écrite en pensant que -1 voulait dire -1 jour par rapport à la date d'aujourd'hui (et non -1 du mois en cours). J'ai même testé, mais j'ai lu trop vite le résultat... Ca donnait bien le 27, mais le 27 février (et non mars)... Si j'avais essayé ça hier, j'aurai vu mon erreur tout de suite...
OK pour la proposition avec -12 heures, mais pourquoi -12 et pas -1, -2 ou -18 ?
Je l'ai écrite en pensant que -1 voulait dire -1 jour par rapport à la date d'aujourd'hui (et non -1 du mois en cours). J'ai même testé, mais j'ai lu trop vite le résultat... Ca donnait bien le 27, mais le 27 février (et non mars)... Si j'avais essayé ça hier, j'aurai vu mon erreur tout de suite...
OK pour la proposition avec -12 heures, mais pourquoi -12 et pas -1, -2 ou -18 ? [...]
J'imagine que les autres marcheront aussi, mais comme -12, c'est le milieu du jour precedent, je prefere minimiser les chances d'avoir des problemes avec les changements d'heure.
Je l'ai écrite en pensant que -1 voulait dire -1 jour par rapport à
la date d'aujourd'hui (et non -1 du mois en cours). J'ai même testé,
mais j'ai lu trop vite le résultat... Ca donnait bien le 27, mais le
27 février (et non mars)... Si j'avais essayé ça hier, j'aurai vu
mon erreur tout de suite...
OK pour la proposition avec -12 heures, mais pourquoi -12 et pas -1, -2
ou -18 ?
[...]
J'imagine que les autres marcheront aussi, mais comme -12, c'est
le milieu du jour precedent, je prefere minimiser les chances
d'avoir des problemes avec les changements d'heure.
Je l'ai écrite en pensant que -1 voulait dire -1 jour par rapport à la date d'aujourd'hui (et non -1 du mois en cours). J'ai même testé, mais j'ai lu trop vite le résultat... Ca donnait bien le 27, mais le 27 février (et non mars)... Si j'avais essayé ça hier, j'aurai vu mon erreur tout de suite...
OK pour la proposition avec -12 heures, mais pourquoi -12 et pas -1, -2 ou -18 ? [...]
J'imagine que les autres marcheront aussi, mais comme -12, c'est le milieu du jour precedent, je prefere minimiser les chances d'avoir des problemes avec les changements d'heure.