Perl ou shell - convertir date en semaine
Fermé
wafa_o
Messages postés
109
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
4 janvier 2011
-
29 déc. 2009 à 20:36
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 29 janv. 2010 à 14:41
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 29 janv. 2010 à 14:41
Bonjour,
Je recherche un module PERL qui me permettra de connaitre le numéro de semaine lorsque j'indique deux dates d'une même semaine.
Par exemple je lance un script pour la semaine du 08/11/2009 au 14/11/2009 et je souhaite récupèrer : semaine 45.
Est ce que vous en connaissez un ?
Merci.
Je recherche un module PERL qui me permettra de connaitre le numéro de semaine lorsque j'indique deux dates d'une même semaine.
Par exemple je lance un script pour la semaine du 08/11/2009 au 14/11/2009 et je souhaite récupèrer : semaine 45.
Est ce que vous en connaissez un ?
Merci.
A voir également:
- Perl ou shell - convertir date en semaine
- Convertir youtube en mp3 avec audacity - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Classic shell windows 11 - Télécharger - Personnalisation
- Convertir epub en kindle - Guide
- Convertir audio en texte word - Guide
10 réponses
Salut,
Avec la commande date
Sinon tu as le module WeekOfYear
Avec la commande date
lami20j@debian-acer:~$ date '+%W' --date="2009/12/30" 52 lami20j@debian-acer:~$ date '+%W' --date="2009/11/10" 45
Sinon tu as le module WeekOfYear
wafa_o
Messages postés
109
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
4 janvier 2011
2
30 déc. 2009 à 09:41
30 déc. 2009 à 09:41
Salut lami20j,
Merci, la commande date me convient. Par contre, comment se fait il que pour :
date '+%W' --date="2009/11/10"
le résultat soit 45 alors qu'il s'agit de la semaine 46 ?
Merci, la commande date me convient. Par contre, comment se fait il que pour :
date '+%W' --date="2009/11/10"
le résultat soit 45 alors qu'il s'agit de la semaine 46 ?
blux
Messages postés
26703
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
4 mars 2025
3 328
30 déc. 2009 à 09:57
30 déc. 2009 à 09:57
Salut,
tout dépend de comment est calculée la première semaine de l'année.
Dans certains logiciels, c'est la semaine qui comprend le 1er janvier, pour d'autres, c'est la semaine qui contient au moins 4 jours dans la nouvelle année et pour d'autres, c'est la première semaine avec 7 jours dans la nouvelle année...
Sur Linux, le première semaine est la semaine 00 et non la semaine 01...
Regarde le résultat de date '+%U' --date="2009/01/01"
tout dépend de comment est calculée la première semaine de l'année.
Dans certains logiciels, c'est la semaine qui comprend le 1er janvier, pour d'autres, c'est la semaine qui contient au moins 4 jours dans la nouvelle année et pour d'autres, c'est la première semaine avec 7 jours dans la nouvelle année...
Sur Linux, le première semaine est la semaine 00 et non la semaine 01...
Regarde le résultat de date '+%U' --date="2009/01/01"
Re,
Par exemple je lance un script pour la semaine du 08/11/2009 au 14/11/2009 et je souhaite récupèrer : semaine 45.
Tu le croyais aussi que c'est 45 ;-)))
C'est peut être puisque pour 01 janvier c'est la semaine zéro
Alors il faut ajouter 1
Par exemple je lance un script pour la semaine du 08/11/2009 au 14/11/2009 et je souhaite récupèrer : semaine 45.
Tu le croyais aussi que c'est 45 ;-)))
C'est peut être puisque pour 01 janvier c'est la semaine zéro
~$ date '+%W' --date="2009/01/01" 00
Alors il faut ajouter 1
lami20j@debian-acer:~$ echo $(( $(date '+%W' --date="2009/11/10") + 1)) 46 lami20j@debian-acer:~$ ^C lami20j@debian-acer:~$ echo $(( $(date '+%W' --date="2009/01/01") + 1)) 1
wafa_o
Messages postés
109
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
4 janvier 2011
2
30 déc. 2009 à 10:00
30 déc. 2009 à 10:00
Super ! Ca fonctionne.
Bonne journée
Bonne journée
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
30 déc. 2009 à 10:14
30 déc. 2009 à 10:14
Salut,
Ou :
;-))
Ou :
date '+%V' --date="2009/11/10"
;-))
blux
Messages postés
26703
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
4 mars 2025
3 328
>
lami20j
30 déc. 2009 à 11:08
30 déc. 2009 à 11:08
pas trouvé dans le man chez moi...
lami20j
>
blux
Messages postés
26703
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
4 mars 2025
30 déc. 2009 à 11:10
30 déc. 2009 à 11:10
Salut blux,
Alors peut être qu'une solution portable c'est du rigueur ;-)
Alors peut être qu'une solution portable c'est du rigueur ;-)
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
>
blux
Messages postés
26703
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
4 mars 2025
30 déc. 2009 à 11:23
30 déc. 2009 à 11:23
%U nombre de semaines écoulées dans l'année si Dimanche est le pre- mier jour de la semaine (00..53) %V nombre de semaines écoulées dans l'année si Lundi est le premier jour de la semaine (01..53) %w Jour de la semaine (0..6); 0 représente Dimanche %W nombre de semaines écoulées dans l'année si Lundi est le premier jour de la semaine (00..53)
blux
Messages postés
26703
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
4 mars 2025
3 328
>
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
30 déc. 2009 à 11:32
30 déc. 2009 à 11:32
Et pourtant, le %V est reconnu !
%m mois (01..12)
%U numéro de semaine dans l'année (00..53). La semaine commence le Dimanche.
%w Jour de la semaine (0..6). Le 0 correspond au Dimanche.
%W numéro de semaine dans l'année (00..53). La semaine commence le Lundi.
Red Hat Enterprise Linux AS release 4 (Nahant Update 3)
%m mois (01..12)
%U numéro de semaine dans l'année (00..53). La semaine commence le Dimanche.
%w Jour de la semaine (0..6). Le 0 correspond au Dimanche.
%W numéro de semaine dans l'année (00..53). La semaine commence le Lundi.
Red Hat Enterprise Linux AS release 4 (Nahant Update 3)
wafa_o
Messages postés
109
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
4 janvier 2011
2
30 déc. 2009 à 11:32
30 déc. 2009 à 11:32
Effectivement, j'ai utilisé '+%V' au lieu de '+%W' ... +1
wafa_o
Messages postés
109
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
4 janvier 2011
2
29 janv. 2010 à 13:07
29 janv. 2010 à 13:07
Bonjour,
A ce sujet, j'ai une autre question svp.
Ce que je souhaite avoir en sortie
01 TEST
(01 est le numéro de semaine)
Voilà mon code :
print FILE`date '+%V' --date="2010/01/04`;
print FILE "TEST\n";
Le problème c'est que j'ai un saut de ligne entre la semaine et TEST. J'obtiens :
01
TEST
Comment résoudre la problème ?
A ce sujet, j'ai une autre question svp.
Ce que je souhaite avoir en sortie
01 TEST
(01 est le numéro de semaine)
Voilà mon code :
print FILE`date '+%V' --date="2010/01/04`;
print FILE "TEST\n";
Le problème c'est que j'ai un saut de ligne entre la semaine et TEST. J'obtiens :
01
TEST
Comment résoudre la problème ?
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
29 janv. 2010 à 14:27
29 janv. 2010 à 14:27
Salut,
$ cat date.pl #!/usr/bin/perl use strict;use warnings; open FILE, ">plop" or die "E/S plop : $!\n"; chomp(my $date=qx#date '+%V' --date="2010/01/04"#); print FILE "$date TEST\n"; __END__ $ perl date.pl $ cat plop 01 TEST
wafa_o
Messages postés
109
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
4 janvier 2011
2
29 janv. 2010 à 14:35
29 janv. 2010 à 14:35
Merci, juste une question pour ma compréhension, à quoi correspond qx ?
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
29 janv. 2010 à 14:41
29 janv. 2010 à 14:41
Salut,
qx// est la même chose que les apostrophes inverses `` que je n'ai pas pus taper dans ma console ;-)
C'est un opérateur pour capturer le résultat d'une commande système.
Voir dans man perlop
qx/CHAINE/
`CHAINE`
Une chaîne qui est (éventuellement) interpolée puis exécutée comme une commande système par /bin/sh ou équivalent. Les jokers, tubes (pipes) et redirections sont pris en compte. L'ensemble de la sortie standard de la commande est renvoyé ; la sortie d'erreur n'est pas affectée. Dans un contexte scalaire, le résultat est retourné comme une seule chaîne (potentiellement multi-lignes) ou undef si la commande échoue. Dans un contexte de liste, le résultat est une liste de lignes (selon la définition des lignes donnée par $/ ou $INPUT_RECORD_SEPARATOR) ou la liste vide si la commande échoue. --
106485010510997108
qx// est la même chose que les apostrophes inverses `` que je n'ai pas pus taper dans ma console ;-)
C'est un opérateur pour capturer le résultat d'une commande système.
Voir dans man perlop
qx/CHAINE/
`CHAINE`
Une chaîne qui est (éventuellement) interpolée puis exécutée comme une commande système par /bin/sh ou équivalent. Les jokers, tubes (pipes) et redirections sont pris en compte. L'ensemble de la sortie standard de la commande est renvoyé ; la sortie d'erreur n'est pas affectée. Dans un contexte scalaire, le résultat est retourné comme une seule chaîne (potentiellement multi-lignes) ou undef si la commande échoue. Dans un contexte de liste, le résultat est une liste de lignes (selon la définition des lignes donnée par $/ ou $INPUT_RECORD_SEPARATOR) ou la liste vide si la commande échoue. --
106485010510997108