Flux rss
Rechercher : dans
Par :

Commande unix - date de la veille

defre, le jeudi 28 août 2003 à 23:42:04 
 Signaler ce message aux modérateurs

Salut a tous,

Je suis débutant, et je cherche a récuperer, pour les besoin d'un script, la date de la veille (jour de la semaine et jour du mois), j'aimerai savoir si c'était possible avec la commande date...
Sinon comment je pourrai la récupérer ?

Merci d'avance pour votre aide
A bientot
Defre

1

Jeff, le vendredi 29 août 2003 à 00:02:11

Quel genre de script ? Sous quel Unix ?

Si tu as GNU date (sous Linux par exemple), c'est simplissime :

date -d '1 day ago'


Reste à formatter la sortie selon tes besoins...



Jeff  --=||[WM@CCM]||=--

Répondre à Jeff

2

Jeff, le vendredi 29 août 2003 à 00:05:38

Tant qu'on y est :

date -d '1 day ago' +%d\/%m

Jeff  --=||[WM@CCM]||=--

Répondre à Jeff

3

Jeff, le vendredi 29 août 2003 à 00:08:19

En fait en relisant ta demande (jour de la semaine/jour du mois) :

date -d '1 day ago' +%w\/%d


Le jour de la semaine est 0 pour dimanche, 1 pour lundi, ... 6 pour samedi. Pour plus d'infos date --help
Jeff  --=||[WM@CCM]||=--

Répondre à Jeff

15

batmat, le samedi 6 septembre 2003 à 11:41:06

Ou encore plus court avec dater --date='yesterday' :-)

@++

Vous hésitez entre Linux et Windows ?
Vous voulez dépenser du temps ou de l'argent ?

Répondre à batmat

4

defre, le vendredi 29 août 2003 à 00:08:58

Je sais pas trop qu'elle unix, c'est un script shell sh.
date -d ne marche pas...

Répondre à defre

5

Jeff, le vendredi 29 août 2003 à 00:17:14

J'ai changé le titre de ton message pour que tu aies plus facilement des réponses. Que donne un "uname -a" ? Jeff  --=||[WM@CCM]||=--

Répondre à Jeff

6

defre, le vendredi 29 août 2003 à 00:21:27

Ca donne AIX...
j'ai essayé une commande du type
date "+%d/%m/%Y" --day 1 day ago'
mais ca marche pas non plus

Répondre à defre

7

Jeff, le vendredi 29 août 2003 à 00:25:07
  • +1

Essayes voir ce script :

#!/bin/sh

# ydate: A Bourne shell script that
# prints yestarday's date
# Output Form: Month Day Year
# From Focus on Unix: http://unix.about.com

# Set the current month day and year.
month=`date +%m`
day=`date +%d`
year=`date +%Y`

# Add 0 to month. This is a
# trick to make month an unpadded integer.
month=`expr $month + 0`

# Subtract one from the current day.
day=`expr $day - 1`

# If the day is 0 then determine the last
# day of the previous month.
if [ $day -eq 0 ]; then
  
  # Find the preivous month.
  month=`expr $month - 1`  

  # If the month is 0 then it is Dec 31 of
  # the previous year.
  if [ $month -eq 0 ]; then
    month=12
    day=31
    year=`expr $year - 1`  

  # If the month is not zero we need to find
  # the last day of the month.
  else
    case $month in
      1|3|5|7|8|10|12) day=31;;
      4|6|9|11) day=30;;
      2)
        if [ `expr $year % 4` -eq 0 ]; then
          if [ `expr $year % 400` -eq 0 ]; then
            day=29
          elif [ `expr $year % 100` -eq 0 ]; then
            day=28
          else
            day=29
          fi
        else
          day=28
        fi
      ;;
    esac
  fi
fi

# Print the month day and year.
echo $month $day $year
exit 0


source : http://unix.about.com/library/weekly/aa070901e.htm Jeff  --=||[WM@CCM]||=--

Répondre à Jeff

8

Jeff, le vendredi 29 août 2003 à 00:27:04

Ou en ksh :


--- cut here for tz.sh ---
#!/bin/ksh
# Usage tz.sh N [fmt_string]
#   Where N is how many days to go backward
#   fmt_string is optional format arg to date command

days=$1;shift

date "+%H %Z" | read t1 tn
t0=$(TZ=0 date +%H)
(( delta = t0 - t1 ))
(( adjust = delta + 24 * days ))

TZ="$tn$adjust" date "$@"

--- end of tz.sh ---

tz.sh 1   # gives you the date and time 24 hours ago
tz.sh 1 '+%d'  # gives you just yesterday's day of the month
tz.sh 1 '+%Y%m%d' # gives you yesterday as yyyymmdd
tz.sh -1  # gives you tomorrow


source : comp.unix.aix : http://groups.google.fr/groups?hl=fr&lr=&ie=UTF-8&oe=UTF-8&threadm=d1c185ef.0201230015.4078df0%40posting.google.com&rnum=7&prev=/&frame=on Jeff  --=||[WM@CCM]||=--

Répondre à Jeff

9

defre, le vendredi 29 août 2003 à 00:29:05

Merci jeff, tu assures...

Répondre à defre

10

francoispgp, le vendredi 29 août 2003 à 13:26:42

Compatibilitee totale en une ligne tout unix et unixlike:

>date "+%d %m %y" |awk '{print $1-1" "$2" "$3}'
28 08 03

Répondre à francoispgp

11

Pitu, le vendredi 29 août 2003 à 14:48:55

Sauf si on est le 1er du mois ... ;o(

  (:•Þ   Pitu

Répondre à Pitu

12

Jeff, le vendredi 29 août 2003 à 15:10:06

... et c'est là que tout ce complique, suivant que l'on est en septebmbre, en mai, voire pire en mars, dans une année bissextile ou non.... Jeff  --=||[WM@CCM]||=--

Répondre à Jeff

13

Pitu, le vendredi 29 août 2003 à 15:14:19

Et le 1er janvier ? T'as pensé au 1er janvier ... 3000 ?
Sinon, il y a pas un moyen archi-compliqué à partir du "cal" ?
(En tout cas, plus compliqué que les scripts que tu as fournis plus haut)

  (:•Þ   Pitu

Maily, arête de râler !

Répondre à Pitu

16

francoispgp, le samedi 6 septembre 2003 à 14:05:25

Mais c'est la seule commande compatibles entre tous les shells....

la solution est donc si on veut avoir tous les cas pris en compte de travailler depuis le calendrier et non la date.

ainsi il n'existe plus de problemes de ce type.

Répondre à francoispgp

14

defre, le dimanche 31 août 2003 à 15:18:12

C clair que pour le moment j'utilise le premier script de jeff, car on est sur qu'il gère toutes les possibilité, j'y ai ajouté une petite partie pour le jour en caractère mais là c'est + facile...
on a jamais vu un lundi après un autre jour qu'un dimanche :)

Répondre à defre

17

Io), le mercredi 8 novembre 2006 à 15:47:23

Faux, la seule méthode pour ne pas se tromper (avec les heures d'ete, les années bissextiles & co) est l'Unixtime.

Répondre à Io)

18

yhupi, le vendredi 30 janvier 2009 à 14:09:57

Script qui gère aussi les années bissextile

# date au format YYYYMMDD
DATE_A_CHARGER=$1


JJ=`echo $DATE_A_CHARGER | cut -c 7-8`
MM=`echo $DATE_A_CHARGER | cut -c 5-6`
YY=`echo $DATE_A_CHARGER | cut -c 1-4`

JJ=$(( JJ - 1 ))
if (( ! "$JJ" ))
then
if "$MM" -eq 1
then
YY=$(( YY - 1))
MM=12
JJ=31
elif
then
JJ=31
MM=$(( MM - 1 ))
elif "$MM" -eq 3
then
MY=$(( YY % 4 ))
"$MY" -eq 0 && JJ=29 || JJ=28
MY=$(( YY % 100 ))
"$MY" -eq 0 && JJ=28
MY=$(( YY % 400 ))
"$MY" -eq 0 && JJ=29
MM=02
elif
then
JJ=30
MM=$(( MM - 1 ))
fi
fi

"${#JJ}" -eq 1 && JJ=0$JJ
"${#MM}" -eq 1 && MM=0$MM
"${#YY}" -eq 1 && YY=0$YY


DATE_A_CHARGER=$YY$MM$JJ

echo $DATE_A_CHARGER

Répondre à yhupi

19

yhupi, le vendredi 30 janvier 2009 à 14:20:04

Pour la gestion des années bissextiles :
Définition des années bissextiles, petit rapel :-)
Divisible par 4 mais pas par 100 sauf si divible par 400
ce script passe l'année 2100 qui n'est pas bissextile

Attention les "crochets des if" n'apparaissent pas, on peut pas être bon partout ;-)


# date au format YYYYMMDD
DATE_A_CHARGER=$1


    JJ=`echo $DATE_A_CHARGER | cut -c 7-8`
    MM=`echo $DATE_A_CHARGER | cut -c 5-6`
    YY=`echo $DATE_A_CHARGER | cut -c 1-4`

    JJ=$(( JJ - 1 ))
    if (( ! "$JJ" ))
    then
        if "$MM" -eq 1
        then
            YY=$(( YY - 1))
            MM=12
            JJ=31
        elif 
        then
            JJ=31
            MM=$(( MM - 1 ))
        elif "$MM" -eq 3
        then
            MY=$(( YY % 4 ))
            "$MY" -eq 0 && JJ=29 || JJ=28
            MY=$(( YY % 100 ))
            "$MY" -eq 0 && JJ=28
            MY=$(( YY % 400 ))
            "$MY" -eq 0 && JJ=29
            MM=02
        elif 
        then
            JJ=30
            MM=$(( MM - 1 ))
        fi
    fi

    "${#JJ}" -eq 1 && JJ=0$JJ
    "${#MM}" -eq 1 && MM=0$MM
    "${#YY}" -eq 1 && YY=0$YY


    DATE_A_CHARGER=$YY$MM$JJ

echo $DATE_A_CHARGER

Répondre à yhupi

21

Jack, le mercredi 1 avril 2009 à 20:16:03

Sinon ça marche chez moi

en solaris et ksh

Hier=`TZ=MET+24 date +"%Y%m%d"`

Répondre à Jack

20

Apatik, le vendredi 30 janvier 2009 à 14:46:03

Ote moi d'un doute Youpi.. 100 c'est pas divisible par 4? Nan parce que au primaire on m'a dit que ça faisait 25.
Si je ne dis pas de betise, 2008 était bisextile donc 2008, 2012, 2016 et ajoutant 4 à chaque fois, on arrive à 2100. Même que ma calculatrice elle m'a dis que 2100/4 ça faisait 525.
Enfin je dis ça, j'dis rien moi.. J'ai même pas lu les scripts... Problème sous Windows? Reboot
Problème sous Linux? Be Root

Répondre à Apatik

22

 ced, le mercredi 10 juin 2009 à 15:10:50

Pour Apatik

Imposée par la réforme du calendrier grégorien en 1582 afin de tenir compte de la durée de révolution de la Terre autour du Soleil : 365,2422 jours. L’année séculaire n’est bissextile que tous les 400 ans. Seules les années séculaires divisibles par 400 sont bissextiles.
donc 2100, même divisible par 4, n'est pas bissextile car pas divisible par 400...
moi je dis ça je dis rien... :)

Répondre à ced
Commandes UNIX Tableau des principales commandes UNIX Commande Unix Description Options ls liste le contenu d'un répertoire -a Affiche tous les fichiers, y compris les fichiers cachés ... www.commentcamarche.net/contents/unix/unixcomm.php3
[shell/unix] date de la veille (Résolu) Bonjour, Quelle commande (en shell-UNIX) permet d'afficher la date de la veille ? PS : je précise que c'est pour un script en ksh Merci de votre aide www.commentcamarche.net/forum/affich-1712296-shell-unix-date-de-la-veille
Problème Pro Gamer Command Unit & Vista (Résolu) Salut tout le monde ! Il y a un an de cela (quand je tournais encore sous XP (ce bon vieux XP =P)) j'ai pris possession du PGCU (Pro Gamer Command Unit) de Saitek. Mon PGCU fontionnait parfaitement et je l'utilisais tous les soirs, j'étais très fier... www.commentcamarche.net/forum/affich-4029231-probleme-pro-gamer-command-unit-vista
[Shell] Accès aux dernières commandes de l'historiqueLe shell Linux/Unix regorge de fonctionnalités permettant de gagner du temps. Ainsi, il est possible de remonter dans l'historique des dernières commandes grâce aux flèches de navigation en appuyant sur la flèche du haut. Mais il y a moyen... www.commentcamarche.net/faq/sujet-971-shell-acces-aux-dernieres-commandes-de-l-historique
[Linux] Utiliser la commande 'su'Préambule Se connecter sous un autre ID utilisateur avec "su" Démarrer un nouveau shell de connexion avec "su -" Revenir au shell précédent Suspendre le shell du compte root Notes Préambule La commande "su" (Switch User, appelée plus... www.commentcamarche.net/faq/sujet-156-linux-utiliser-la-commande-su
Rétablir la mise en veille prolongéeVous aviez l'habitude d'utiliser la mise en veille prolongée sous VISTA, ce qui est fortement utile lorsque l'on a un notebook, mais l'option a disparu du menu d'arrêt accessible via le bouton démarrer ? Une des causes possibles est qu'il y a une... www.commentcamarche.net/faq/sujet-9385-retablir-la-mise-en-veille-prolongee
Commande unix pour copier un dossiersalut, quelle est la commande unix pour copier un dossier contenant plusieurs fichiers dans un shell merci d'avance de me répondre A+ www.commentcamarche.net/forum/affich-599275-commande-unix-pour-copier-un-dossier
[Shell UNIX] Date de modif d'un fichierBonjour, Y a-t-il une commande (ksh) qui permette de récupérer la date de dernière modification d'un fichier (à part ls -lrt) ? Merci www.commentcamarche.net/forum/affich-1715588-shell-unix-date-de-modif-d-un-fichier
Commande UnixSalut! Existe-t-il une commande qui te donne direct la date systeme d'un fichier et uniquement la date. Merçi pr l'infos. www.commentcamarche.net/forum/affich-313165-commande-unix
Télécharger Eva/3 Universal Database Convertereva/3 Universal Database Converter est logiciel de conversion de base de données entièrement gratuit. L'application prend en charge les bases suivantes : Microsoft Access, MySQL, PostgreSQL, HSQLDB, JDataStore, Microsoft SQL Server 2000, IBM DB2 8.1,... www.commentcamarche.net/telecharger/telecharger-34058308-eva-3-universal-database-converter
Systèmes UNIX - Le shellIntroduction au shell L'interpréteur de commandes est l'interface entre l'utilisateur et le système d'exploitation, d'où son nom anglais «shell», qui signifie «coquille». Le shell est ainsi chargé de faire l'intermédiaire entre le système... www.commentcamarche.net/contents/unix/unix-shell.php3
Introduction aux systèmes UNIXLe système UNIX Le système Unix est un système d'exploitation multi-utilisateurs, multi-tâches, ce qui signifie qu'il permet à un ordinateur mono ou multi-processeurs de faire exécuter simultanément plusieurs programmes par un ou plusieurs... www.commentcamarche.net/contents/unix/unixintro.php3
UNIX - Les fichiersIntroduction aux fichiers Unix Sous les systèmes UNIX tout élément est représenté sous forme de fichier. L'ensemble des fichiers est architecturé autour d'une unique arborescence dont la base, appelée racine, est notée «/». Types de... www.commentcamarche.net/contents/unix/unix-fichiers.php3