Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3102 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  recupérer la date d'hier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

recupérer la date d'hier

n°1362275
dav-42
Posté le 09-05-2006 à 12:21:44  profilanswer
 

Bonjour,
 
J'ai un script sh qui s'execute automatiquement tous les jours et qui doit récupérer la date d'hier au format AAAAMMJJ sans aucun caratere entre l'année le mois et le jour.
Pour le monent je fais ca:
 

Code :
  1. annee=$(date +%Y)
  2. mois=$(date +%m)
  3. jour=$(date +%d)
  4. jour=$[$jour-1]
  5. date=$annee$mois$jour


 
Le souci que je vais avoir c'est le premier du mois pour savoir si la veille on etait un 31, 30, 29 voire 28
Pas trop compliqué à faire les testes mais bon s'il existe deja quelque chose en shell je prefere utiliser la fonction de base. Est ce que ca existe?
 
Merci

mood
Publicité
Posté le 09-05-2006 à 12:21:44  profilanswer
 

n°1362301
PepMat
Posté le 09-05-2006 à 12:51:24  profilanswer
 

Si ton script est automatiquement lancé absolument tous les jours
et que tu génères au moins un fichier log,
-> tu peux récupérer la propriété date du dernier fichier log créé.
 
Il faudra juste faire une manip manuelle pour la première fois.

n°1362341
dav-42
Posté le 09-05-2006 à 13:40:58  profilanswer
 

Merci de ta reponse mais cette solution ne me convient pas trop car si un jour le programme ne se lance pas pas X raisons ca ne marchera pas :(

n°1362348
Elmoricq
Modérateur
Posté le 09-05-2006 à 13:45:52  profilanswer
 

Le plus simple que je connaisse est d'utiliser PERL, qui est normalement installé sur ta machine/serveur (c'est de plus en plus standard... faut croiser les doigts) :
 
En ksh :

hier=`perl -e '($s,$m,$h,$J,$M,$A) = localtime(time - 24*60*60) and printf("%04d%02d%02d\n", $A+1900,$M+1,$J)'`
 
echo $hier


 
Principe : on prend la date en nombre de seconde (fonction "time" ), on enlève le nombre de secondes d'une journée (24 heures * 60 minutes * 60 secondes), on convertit ça en une suite de variables utilisables (localtime nous donne, dans l'ordre : secondes, minutes, heures, jours, mois, années), et on l'affiche avec printf() en formaté.
 
Le tout sur une seule ligne.
 
 
En script-shell pur, je ne connais pas de bon moyen de parvenir à ce résultat aussi facilement.


Message édité par Elmoricq le 09-05-2006 à 13:46:18
n°1362404
PepMat
Posté le 09-05-2006 à 14:33:16  profilanswer
 
n°1362411
Elmoricq
Modérateur
Posté le 09-05-2006 à 14:36:04  profilanswer
 

Pas standard.
 
Je pense que la plupart des Unix n'implémentent pas cette solution.
Notamment l'OS sur lequel je suis, Solaris 8, qui ne reconnait pas l'option -d à "date" :o


Message édité par Elmoricq le 09-05-2006 à 14:36:46
n°1362428
dav-42
Posté le 09-05-2006 à 14:50:10  profilanswer
 

Si non je peux me debrouiller avec le timestamp en soustrayant 24*3600 mais apres il faut que je puisse convertir mon timestamp en AAAAJJMM comme dans la solution de Elmoricq mais en shell et pas en perl

n°1362436
Elmoricq
Modérateur
Posté le 09-05-2006 à 14:57:13  profilanswer
 

Ben si tu as PERL sur ta machine, c'est quand même le plus simple.
 
Et comme on trouve cet interpréteur relativement partout...

n°1362440
dav-42
Posté le 09-05-2006 à 14:59:27  profilanswer
 

Disons que c'est imposé d'utiliser un shell qui appel aussi un programme perl mais qui fait d'autres choses avant

n°1362457
Elmoricq
Modérateur
Posté le 09-05-2006 à 15:10:26  profilanswer
 

:??:
 
Regarde la ligne que j'ai mise au-dessus : c'est invoqué à partir du shell pour stocker le résultat dans une variable, c'est comme si tu appelais awk ou sed.
 
Ou alors j'ai rien compris à ce que tu veux dire.

mood
Publicité
Posté le 09-05-2006 à 15:10:26  profilanswer
 

n°1362470
dav-42
Posté le 09-05-2006 à 15:22:16  profilanswer
 

Désolé je n'avais pas compris que c'était invoqué à partir du shell donc ca fonctionne bien comme solution merci


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  recupérer la date d'hier

 

Sujets relatifs
[JS] Recuperer un indice d'un element ?Gettext Poker - Récupérer le texte d'un "controle" d'une autre fenetre
probleme avec champ date résoluRécuperer une ligne d'un fichier texte dans une variable
Extraire le jour d'une date MySQLRécupérer la mise en forme conditionnelle
Récuperer les dimensions d'une image (PHP)convertir date dd/mm/yyyy en date sql
recuperer la valeur d'une variable javascript dans du code phpAjax : Récupérer un flux XML coté serveur
Plus de sujets relatifs à : recupérer la date d'hier


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR