Connaître le jour en rapport avec une date
Résolu/Fermé
OlivrT
Messages postés
323
Date d'inscription
lundi 2 novembre 2009
Statut
Membre
Dernière intervention
24 mai 2012
-
4 mars 2010 à 17:28
OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 - 8 mars 2010 à 13:54
OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 - 8 mars 2010 à 13:54
A voir également:
- Jackie michel jour
- Mise a jour chrome - Accueil - Applications & Logiciels
- Mise a jour windows 10 - Accueil - Mise à jour
- Mettre à jour ses pilotes - Guide
- Mise a jour chromecast - Accueil - Guide TV et vidéo
- Mise a jour kindle - Guide
32 réponses
dubcek
Messages postés
18764
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
9 février 2025
5 624
6 mars 2010 à 09:49
6 mars 2010 à 09:49
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]}' $
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
4 mars 2010 à 17:49
4 mars 2010 à 17:49
Salut,
Pourquoi te compliquais la vie ?
Non ? ;-))
Pourquoi te compliquais la vie ?
date +%A
Non ? ;-))
OlivrT
Messages postés
323
Date d'inscription
lundi 2 novembre 2009
Statut
Membre
Dernière intervention
24 mai 2012
36
5 mars 2010 à 00:03
5 mars 2010 à 00:03
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 ?
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
Modifié par jipicy le 5/03/2010 à 07:32
Modifié par jipicy le 5/03/2010 à 07:32
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
OlivrT
Messages postés
323
Date d'inscription
lundi 2 novembre 2009
Statut
Membre
Dernière intervention
24 mai 2012
36
5 mars 2010 à 08:57
5 mars 2010 à 08:57
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
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
Modifié par jipicy le 5/03/2010 à 09:20
Modifié par jipicy le 5/03/2010 à 09:20
Mets des quotes doubles autour de ta variable "$madate" et ça devrait aller mieux ;-))
Edit : Oups j'avions pas vu la fin ;-((
Quelle version de Linux ou Unix utilises-tu ?
Edit : Oups j'avions pas vu la fin ;-((
Quelle version de Linux ou Unix utilises-tu ?
OlivrT
Messages postés
323
Date d'inscription
lundi 2 novembre 2009
Statut
Membre
Dernière intervention
24 mai 2012
36
5 mars 2010 à 09:28
5 mars 2010 à 09:28
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 ?
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
5 mars 2010 à 09:35
5 mars 2010 à 09:35
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...
OlivrT
Messages postés
323
Date d'inscription
lundi 2 novembre 2009
Statut
Membre
Dernière intervention
24 mai 2012
36
5 mars 2010 à 09:41
5 mars 2010 à 09:41
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 ?
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
5 mars 2010 à 10:05
5 mars 2010 à 10:05
Par MP ;-))
OlivrT
Messages postés
323
Date d'inscription
lundi 2 novembre 2009
Statut
Membre
Dernière intervention
24 mai 2012
36
5 mars 2010 à 10:06
5 mars 2010 à 10:06
lol, merci m'sieur
dubcek
Messages postés
18764
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
9 février 2025
5 624
5 mars 2010 à 10:58
5 mars 2010 à 10:58
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 $
OlivrT
Messages postés
323
Date d'inscription
lundi 2 novembre 2009
Statut
Membre
Dernière intervention
24 mai 2012
36
5 mars 2010 à 11:15
5 mars 2010 à 11:15
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
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
5 mars 2010 à 11:45
5 mars 2010 à 11:45
Ben avec les 2 derniers exemples de dubcek et en parsant le résultat dans un "case ... esac" avec les jours de la semaine ça devrait le faire, non ?
case $jour in 0|7) echo "Dimanche" ;; 1) echo Lundi ;; etc.
OlivrT
Messages postés
323
Date d'inscription
lundi 2 novembre 2009
Statut
Membre
Dernière intervention
24 mai 2012
36
5 mars 2010 à 11:58
5 mars 2010 à 11:58
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.
dubcek
Messages postés
18764
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
9 février 2025
5 624
5 mars 2010 à 12:45
5 mars 2010 à 12:45
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 $
OlivrT
Messages postés
323
Date d'inscription
lundi 2 novembre 2009
Statut
Membre
Dernière intervention
24 mai 2012
36
5 mars 2010 à 13:41
5 mars 2010 à 13:41
#!/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 :
dubcek
Messages postés
18764
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
9 février 2025
5 624
5 mars 2010 à 14:28
5 mars 2010 à 14:28
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 $
dubcek
Messages postés
18764
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
9 février 2025
5 624
5 mars 2010 à 15:30
5 mars 2010 à 15:30
avec
perl -e 'print "@INC"'
on peut voir quelles librairies Solaris perl utilise par defaut
perl -e 'print "@INC"'
on peut voir quelles librairies Solaris perl utilise par defaut
OlivrT
Messages postés
323
Date d'inscription
lundi 2 novembre 2009
Statut
Membre
Dernière intervention
24 mai 2012
36
5 mars 2010 à 15:54
5 mars 2010 à 15:54
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.
OlivrT
Messages postés
323
Date d'inscription
lundi 2 novembre 2009
Statut
Membre
Dernière intervention
24 mai 2012
36
5 mars 2010 à 16:03
5 mars 2010 à 16:03
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);
}
dubcek
Messages postés
18764
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
9 février 2025
5 624
5 mars 2010 à 16:05
5 mars 2010 à 16:05
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
OlivrT
Messages postés
323
Date d'inscription
lundi 2 novembre 2009
Statut
Membre
Dernière intervention
24 mai 2012
36
5 mars 2010 à 16:09
5 mars 2010 à 16:09
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
dubcek
Messages postés
18764
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
9 février 2025
5 624
5 mars 2010 à 16:10
5 mars 2010 à 16:10
dans /app/gnu/ n'y a-t-il pas la commande GNU date
find /app/gnu/ -name date -ls
find /app/gnu/ -name date -ls