Connaître le jour en rapport avec une date
Résolu
OlivrT
Messages postés
323
Date d'inscription
Statut
Membre
Dernière intervention
-
OlivrT Messages postés 323 Date d'inscription Statut Membre Dernière intervention -
OlivrT Messages postés 323 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je voudrais trouver un script qui me retourne le jour par rapport à une date donnée.
Exemple, aujourd'hui nous sommes le 4 mars, le résultat doit être 4 puisque c'est un jeudi.
J'utilise le code suivant mais cela fonctionne avec la fonction "date", comment y passer une variable ???
numjour= $(date +%w)
if test $numjour -eq 1
then
echo "lundi"
elif test $numjour -eq 1
echo "mardi"
fi
Mon Shell est #!/bin/ksh
Merci d'avance car je ne trouve rien du tout !
je voudrais trouver un script qui me retourne le jour par rapport à une date donnée.
Exemple, aujourd'hui nous sommes le 4 mars, le résultat doit être 4 puisque c'est un jeudi.
J'utilise le code suivant mais cela fonctionne avec la fonction "date", comment y passer une variable ???
numjour= $(date +%w)
if test $numjour -eq 1
then
echo "lundi"
elif test $numjour -eq 1
echo "mardi"
fi
Mon Shell est #!/bin/ksh
Merci d'avance car je ne trouve rien du tout !
A voir également:
- Can't locate time/piece.pm in @inc
- Mise a jour chrome - Accueil - Applications & Logiciels
- Mise a jour windows 10 - Accueil - Mise à jour
- Plan rapport de stage - Guide
- Mettre a jour chromecast - Accueil - Guide TV et vidéo
- Le jour de ma naissance gratuit - Télécharger - Histoire & Religion
32 réponses
ce script n'utilise ni perl, ni date mais la commande cal, qui devrait être la même sur Solaris, essaye
$ $ cal 03 2010 March 2010 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 $ ./day 28/2/2010 dimanche $ ./day 6/3/2010 samedi $ ./day 04/7/1996 jeudi $ ./day 30/11/2003 dimanche $ ./day 04/9/2003 jeudi $ ./day 6/6/1944 mardi $ $ cat day #!/bin/bash set $(echo $1 | sed -e 's+/+ +g') cal $2 $3 |nawk -v d=$1 'BEGIN{split("dimanche lundi mardi mercredi jeudi vendredi samedi",j)} NR>2 {sub("^0","",d) ; for(n=1;n<8;n++)if(substr($0,1+((n-1)*3),2)+0 == d)exit} ; END{print j[n]}' $
Bonjour,
ben non ! Je réexplique car je ne suis peut-être pas clair.
Je voudrais trouver le jour que représente une date.
Donc pour reprendre mon exemple, si je passe la date du 4 mars, je devrais trouver jeudi.
Exemple : numjour= $($MaVariable +%w) sauf que ça ne marche pas :-(
Là vous me donner à nouveau la fonction date, mais moi je voudrais remplacer "date" par une variable qui contient une date.
D'ailleurs j'ai une seconde question pour cela, comment écrit-on dans une variable Unix une valeur au format date ? Exemple en Access c'est #2008/24/12#, en sql server c'est '2008-30-02', etc, ... mais en Unix c'est comment ?
Suis-je clair ?
ben non ! Je réexplique car je ne suis peut-être pas clair.
Je voudrais trouver le jour que représente une date.
Donc pour reprendre mon exemple, si je passe la date du 4 mars, je devrais trouver jeudi.
Exemple : numjour= $($MaVariable +%w) sauf que ça ne marche pas :-(
Là vous me donner à nouveau la fonction date, mais moi je voudrais remplacer "date" par une variable qui contient une date.
D'ailleurs j'ai une seconde question pour cela, comment écrit-on dans une variable Unix une valeur au format date ? Exemple en Access c'est #2008/24/12#, en sql server c'est '2008-30-02', etc, ... mais en Unix c'est comment ?
Suis-je clair ?
Re-
Le "man date" t'aurait dit tout ça...
Format de date AAA/MM/JJ ou AAA-MM-JJ
;-))
Édit : Format de date
$ man woman
Il n'y a pas de page de manuel pour woman.
Le "man date" t'aurait dit tout ça...
Format de date AAA/MM/JJ ou AAA-MM-JJ
date -d '2008/12/24' +'%A' mercredi
;-))
Édit : Format de date
$ man woman
Il n'y a pas de page de manuel pour woman.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re,
fonctionne pas, j'ai le message suivant :
Mon code :
#!/bin/ksh
clear
madate=2008/12/24
jour=`date -d '$madate' +'%A'`
echo "Num Jour ? $jour"
exit
J'ai essayé ceci également :
#!/bin/ksh
clear
madate="2008/12/24"
jour=`date -d $madate +'%A'`
echo "Num Jour ? $jour"
exit
Résulat :
date: illegal option -- d
usage: date [-u] mmddHHMM[[cc]yy][.SS]
date [-u] [+format]
date -a [-]sss[.fff]
Pourtant j'ai trouvé cet argument dans une page, mais j'ai aucune idée de pourquoi ça ne fonctionne pas
fonctionne pas, j'ai le message suivant :
Mon code :
#!/bin/ksh
clear
madate=2008/12/24
jour=`date -d '$madate' +'%A'`
echo "Num Jour ? $jour"
exit
J'ai essayé ceci également :
#!/bin/ksh
clear
madate="2008/12/24"
jour=`date -d $madate +'%A'`
echo "Num Jour ? $jour"
exit
Résulat :
date: illegal option -- d
usage: date [-u] mmddHHMM[[cc]yy][.SS]
date [-u] [+format]
date -a [-]sss[.fff]
Pourtant j'ai trouvé cet argument dans une page, mais j'ai aucune idée de pourquoi ça ne fonctionne pas
Je travaille sous Unix , sauf erreur de ma part en Solaris 10 ?
Mon Shell est KSH
Je ne suis pas expert en Bash comme tu peux t'en douter, il existe une commande qui pourrait répondre plus précisément ?
Mon Shell est KSH
Je ne suis pas expert en Bash comme tu peux t'en douter, il existe une commande qui pourrait répondre plus précisément ?
Arf, effectivement on est un peu restreint sous Solaris ;-((
Une solution en Perl doit exister. faut attendre les experts pour ça, comme lami20j ou dubcek...
Une solution en Perl doit exister. faut attendre les experts pour ça, comme lami20j ou dubcek...
En effet 'dubcek' m'a déjà dépanné sur un autre problème de date et justement en Perl.
Comment je fais pour lui écrire directement ?
Comment je fais pour lui écrire directement ?
hello
avec strptime, on décrit le format de date que l'on a : "%Y/%m/%d"
avec strptime, on décrit le format de date que l'on a : "%Y/%m/%d"
$ date=2010/3/5 $ perl -e 'use Time::Piece ;my $t = Time::Piece->strptime($ARGV[0],"%Y/%m/%d");print $t->strftime("%u\n")' $date 5 $ $ date=2010/8/7 $ perl -e 'use Time::Piece ;my $t = Time::Piece->strptime($ARGV[0],"%Y/%m/%d");print $t->strftime("%u\n")' $date 6 $ date=2008/12/24 $ perl -e 'use Time::Piece ;my $t = Time::Piece->strptime($ARGV[0],"%Y/%m/%d");print $t->strftime("%u\n")' $date 3 $
Salut dubceck,
merci pour ta réponse mais sans te vexer elle n'est pas en rapport avec ma question de départ :-(
Moi je cherche comment trouver une valeur qui m'indiquera que par exemple le 28/02/2010 c'est un dimanche.
Mon shell est Ksh et je travaille sous Unix solaris 10.
Est-ce que tu aurais quelque chose pour moi ?
Jadis tu m'avais envoyé le code suivant, qui fonctionne très bien et qui me retourne la date au format désiré avec x jours en plus ou en moins :
DAY=0
TODAY_YYYYMMDD=$(perl -e 'use POSIX qw(strftime); print strftime "%Y%m%d", localtime(time()+3600*24*$ARGV[0])' -- $DAY)
Tu n'aurais pas le même truc qui me retournerai : 1 pour un lundi, 2 pour un mardi MAIS avec une date fournit par variable ?
bàt
merci pour ta réponse mais sans te vexer elle n'est pas en rapport avec ma question de départ :-(
Moi je cherche comment trouver une valeur qui m'indiquera que par exemple le 28/02/2010 c'est un dimanche.
Mon shell est Ksh et je travaille sous Unix solaris 10.
Est-ce que tu aurais quelque chose pour moi ?
Jadis tu m'avais envoyé le code suivant, qui fonctionne très bien et qui me retourne la date au format désiré avec x jours en plus ou en moins :
DAY=0
TODAY_YYYYMMDD=$(perl -e 'use POSIX qw(strftime); print strftime "%Y%m%d", localtime(time()+3600*24*$ARGV[0])' -- $DAY)
Tu n'aurais pas le même truc qui me retournerai : 1 pour un lundi, 2 pour un mardi MAIS avec une date fournit par variable ?
bàt
Bon j'ai écrit ceci et j'ai le message d'erreur suivant :
date1=2010/02/28
result=$(perl -e 'use Time::Piece ;my $t = Time::Piece->strptime($ARGV[0],"%Y/%m/%d");print $t->strftime("%u\n")' $date)
echo "resultat : $result"
Messages :
Can't locate Time/Piece.pm in @INC at -e line 1.
BEGIN failed--compilation aborted at -e line 1.
date1=2010/02/28
result=$(perl -e 'use Time::Piece ;my $t = Time::Piece->strptime($ARGV[0],"%Y/%m/%d");print $t->strftime("%u\n")' $date)
echo "resultat : $result"
Messages :
Can't locate Time/Piece.pm in @INC at -e line 1.
BEGIN failed--compilation aborted at -e line 1.
je voudrais trouver un script qui me retourne le jour par rapport à une date donnée.Exemple, aujourd'hui nous sommes le 4 mars, le résultat doit être 4 puisque c'est un jeudi.
sic
Moi je cherche comment trouver une valeur qui m'indiquera que par exemple le 28/02/2010 c'est un dimanche.
sic
Moi je cherche comment trouver une valeur qui m'indiquera que par exemple le 28/02/2010 c'est un dimanche.
$ date=28/2/2010 $ perl -e 'use Time::Piece ;my $t = Time::Piece->strptime($ARGV[0],"%d/%m/%Y");print $t->strftime("%A\n")' $date Sunday $
#!/bin/ksh
clear
date=28/2/2010
result=$(perl -e 'use Time::Piece ;my $t = Time::Piece->strptime($ARGV[0],"%d/%m/%Y");print $t->strftime("%A\n")' $date)
echo "resultat : $result"
Message d'erreur :
Can't locate Time/Piece.pm in @INC at -e line 1.
BEGIN failed--compilation aborted at -e line 1.
resultat :
clear
date=28/2/2010
result=$(perl -e 'use Time::Piece ;my $t = Time::Piece->strptime($ARGV[0],"%d/%m/%Y");print $t->strftime("%A\n")' $date)
echo "resultat : $result"
Message d'erreur :
Can't locate Time/Piece.pm in @INC at -e line 1.
BEGIN failed--compilation aborted at -e line 1.
resultat :
Solaris perl ne connait pas Time::Piiece, as-tu un compilateur C ?
$ cat date.c #include <stdio.h> #include <time.h> main(int argc, char **argv) { struct tm tm; char buf[128]; strptime(argv[1],"%d/%m/%Y", &tm); strftime(buf, sizeof(buf), "%A", &tm); printf("%s\n", buf); } $ make date cc date.c -o date $ ./date 28/2/2010 Sunday $
pas de compliateur C :-(((
Merci pour la version, le résultat est : /app/gnu/lib/perl5/sun4-solaris /app/gnu/lib/perl5
Je suis coincé :-/
Je vous explique ce à quoi je désire aboutir.
Chaque fin de mois nous recevons un fichier très volumineux.
La date de réception variera selon le joue oeuvré. Si le dernier jour du mois tombe entre lundi et vendredi, il me suffit de trouver cette date et le tour est joué.
Par contre, et c'est là que je suis coincé, si le dernier jour du mois tombe un dimanche, comme par exemple le 28 février 2010, nous aurions reçu le fichier le 26 car le 26 c'est le dernier jour oeuvré du mois (nous ne travaillons pas le samedi). Donc voilà pourquoi je désire connaître à quel jour correspond une date ...
Si quelqu'un a une idée, il est le bienvenu !
Merci en tout cas.
Merci pour la version, le résultat est : /app/gnu/lib/perl5/sun4-solaris /app/gnu/lib/perl5
Je suis coincé :-/
Je vous explique ce à quoi je désire aboutir.
Chaque fin de mois nous recevons un fichier très volumineux.
La date de réception variera selon le joue oeuvré. Si le dernier jour du mois tombe entre lundi et vendredi, il me suffit de trouver cette date et le tour est joué.
Par contre, et c'est là que je suis coincé, si le dernier jour du mois tombe un dimanche, comme par exemple le 28 février 2010, nous aurions reçu le fichier le 26 car le 26 c'est le dernier jour oeuvré du mois (nous ne travaillons pas le samedi). Donc voilà pourquoi je désire connaître à quel jour correspond une date ...
Si quelqu'un a une idée, il est le bienvenu !
Merci en tout cas.
dubcek,
j'ai peut-être parlé trop vite, regarde le code ci-dessous. Il permet de retirer ou d'ajouter x mois à une valeur yyyymm. Ca ressemble bien à du C ça non ? Mais j'ai aucune idée comment refaire ce que tu as écrit :-/
Le fichier s'appelle 'ajouter-mois' sans extension et je l'utilise comme suit :
MOIS=201003
MOIS=`ajouter-mois ${MOIS} -1`
Le résultat sera 201002
#!/usr/bin/nawk -f
BEGIN {
Mois = ARGV[1];
Nb = ARGV[2];
Annee = int(Mois / 100);
NumMois = Mois - Annee * 100;
if(Nb > 0) {
while(Nb > 0) {
if(NumMois < 12)
NumMois++;
else {
NumMois = 1;
Annee++;
}
Nb--;
}
}
else {
while(Nb < 0) {
if(NumMois > 1)
NumMois--;
else {
NumMois = 12;
Annee--;
}
Nb++;
}
}
printf("%2.2d%2.2d\n", Annee, NumMois);
}
j'ai peut-être parlé trop vite, regarde le code ci-dessous. Il permet de retirer ou d'ajouter x mois à une valeur yyyymm. Ca ressemble bien à du C ça non ? Mais j'ai aucune idée comment refaire ce que tu as écrit :-/
Le fichier s'appelle 'ajouter-mois' sans extension et je l'utilise comme suit :
MOIS=201003
MOIS=`ajouter-mois ${MOIS} -1`
Le résultat sera 201002
#!/usr/bin/nawk -f
BEGIN {
Mois = ARGV[1];
Nb = ARGV[2];
Annee = int(Mois / 100);
NumMois = Mois - Annee * 100;
if(Nb > 0) {
while(Nb > 0) {
if(NumMois < 12)
NumMois++;
else {
NumMois = 1;
Annee++;
}
Nb--;
}
}
else {
while(Nb < 0) {
if(NumMois > 1)
NumMois--;
else {
NumMois = 12;
Annee--;
}
Nb++;
}
}
printf("%2.2d%2.2d\n", Annee, NumMois);
}
regarde dans /usr si il n'y a pas d'autres librairies perl
find /usr -name "perl*" -type d -ls
dans /app/gnu/ n'y a-t-il pas la commande GNU date
find /app/gnu/ -name date -ls
find /usr -name "perl*" -type d -ls
dans /app/gnu/ n'y a-t-il pas la commande GNU date
find /app/gnu/ -name date -ls
Celles à qui j'ai accès sont :
82688 1 drwxr-xr-x 7 root bin 512 Feb 5 2009 /usr/sfw/lib/webmin/perlmod
13987 1 drwxr-xr-x 7 root bin 512 Feb 5 2009 /usr/perl5
79886 1 drwxr-xr-x 3 root bin 512 Feb 5 2009 /usr/apache/perl5
79902 1 drwxr-xr-x 2 root bin 512 Feb 6 2009 /usr/apache/perl5/5.8.4/sun4-solaris/auto/Apache/include/modules/perl
77490 1 drwxr-xr-x 8 root bin 512 Feb 6 2009 /usr/apache2/lib/perl
82688 1 drwxr-xr-x 7 root bin 512 Feb 5 2009 /usr/sfw/lib/webmin/perlmod
13987 1 drwxr-xr-x 7 root bin 512 Feb 5 2009 /usr/perl5
79886 1 drwxr-xr-x 3 root bin 512 Feb 5 2009 /usr/apache/perl5
79902 1 drwxr-xr-x 2 root bin 512 Feb 6 2009 /usr/apache/perl5/5.8.4/sun4-solaris/auto/Apache/include/modules/perl
77490 1 drwxr-xr-x 8 root bin 512 Feb 6 2009 /usr/apache2/lib/perl