[PERL]-Trouver le jour d'une date donnée
Fermé
blux
Messages postés
25999
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
23 avril 2024
-
18 mai 2006 à 14:52
blux Messages postés 25999 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 23 avril 2024 - 6 déc. 2010 à 20:37
blux Messages postés 25999 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 23 avril 2024 - 6 déc. 2010 à 20:37
A voir également:
- [PERL]-Trouver le jour d'une date donnée
- Trouver adresse mac - Guide
- Trouver une adresse avec un nom de famille gratuit ✓ - Forum Mobile
- Mettre à jour ses pilotes - Guide
- Trouver un numéro de portable avec un nom ✓ - Forum Mobile
- Dans la table des matières de ce document, le chapitre 6 et ses 2 sections n'apparaissent pas. trouvez l'erreur dans la structure du document et corrigez-la. mettez à jour la table des matières. quel est le mot formé par les lettres en majuscules de la table des matières après sa mise à jour ? - Forum Word
12 réponses
blux
Messages postés
25999
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
23 avril 2024
3 289
18 mai 2006 à 16:03
18 mai 2006 à 16:03
Et je n'ai pas les modules CPAN de date, je ne peux pas non plus les installer...
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 567
18 mai 2006 à 17:30
18 mai 2006 à 17:30
Salut,
Mais je ne sais pas passer en paramètre de localtime une date précise...
c'est normal que tu ne peux pas.
quand tu fait localtime(time) tu n'as pas en argument une date précise mais la conversion de cette date en secondes Epoch, c'est ça que fait la fonction time.
En bref tu peux le faire manuellement avec une date de la façon suivante.
1. Tu transformes la date en secondes Epoch
utilisation du module standard Time::Local et les fonctions timelocal et/ou timegm
2. Tu passes en argument à localtime ce que tu obtiens au point 1.
lami20j
Mais je ne sais pas passer en paramètre de localtime une date précise...
c'est normal que tu ne peux pas.
quand tu fait localtime(time) tu n'as pas en argument une date précise mais la conversion de cette date en secondes Epoch, c'est ça que fait la fonction time.
En bref tu peux le faire manuellement avec une date de la façon suivante.
1. Tu transformes la date en secondes Epoch
utilisation du module standard Time::Local et les fonctions timelocal et/ou timegm
use Time::Local #jours 1-31 #mois 1-12 #année sur 4 chiffres my $time = timelocal($sec, $min, $h, $d, $m-1, $y-1900);
2. Tu passes en argument à localtime ce que tu obtiens au point 1.
my ($secondes, $minutes, $heures, $jour_mois, $mois,$an) = localtime($time);
lami20j
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 567
18 mai 2006 à 17:35
18 mai 2006 à 17:35
Re,
je cherche comment trouver en perl le jour de la semaine d'une date donnée...
Vu que tu n'as pas accès au modules Cpan peut être vaut mieux créer une fonction.
lami20j
je cherche comment trouver en perl le jour de la semaine d'une date donnée...
Vu que tu n'as pas accès au modules Cpan peut être vaut mieux créer une fonction.
lami20j
blux
Messages postés
25999
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
23 avril 2024
3 289
19 mai 2006 à 10:49
19 mai 2006 à 10:49
Merci bien, ça marche.
En fait le jour, je sais le retrouver avec le champ $jour_semaine de localtime...
Ce que je ne savais pas, c'était convertir une date quelconque en secondes epoch...
En fait le jour, je sais le retrouver avec le champ $jour_semaine de localtime...
Ce que je ne savais pas, c'était convertir une date quelconque en secondes epoch...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour
Je souhaite convertir sous PERL la chaine de caractères suivante (format date UNIX) 'Fri Aug 18 04:15:27 2006'
au format chaine de caractère suivant 'YYYY-MM-DD HH:MI:SS'
Merci pour votre aide!
Dom'
Je souhaite convertir sous PERL la chaine de caractères suivante (format date UNIX) 'Fri Aug 18 04:15:27 2006'
au format chaine de caractère suivant 'YYYY-MM-DD HH:MI:SS'
Merci pour votre aide!
Dom'
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 567
18 août 2006 à 20:42
18 août 2006 à 20:42
Salut,
#!/usr/bin/perl # use warnings;use strict; # en utilisant la fonction localtime # my ($sec, $min, $heure, $jour, $mois,$annee, undef, undef, undef) = localtime(); $mois += 1 and $annee += 1900; $jour = sprintf("%02d",$jour); $mois = sprintf("%02d",$mois); my $d0 = "$annee-$mois-$jour $heure:$min:$sec"; print $d0,"\n"; # en utilisant la commande date (plus simple) # je stocke dans la variable $d1 # en utilisant `` (apostrophes enverses) # my $d1 = `date '+%Y-%m-%d %H:%M:%S'`; print $d1,"\n"; __END__ Il y a des modules sur CPAN pour gérer les dateslami20j
Salut,
Merci pour le tuyau, mais mon problème c'est que je dois passer la date à formater en paramètre et qui n'est pas la date courante d'UNIX...
Comment faire ?
Merci
Dom'
Merci pour le tuyau, mais mon problème c'est que je dois passer la date à formater en paramètre et qui n'est pas la date courante d'UNIX...
Comment faire ?
Merci
Dom'
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 567
18 août 2006 à 23:42
18 août 2006 à 23:42
Re,
#!/usr/bin/perl # use warnings;use strict; use Time::Local; my $date = 'Fri Aug 18 04:15:27 2006'; $date =~ /\w+\s*(\w{3})\s*(\d\d?)\s*(\d\d):(\d\d):(\d\d)\s*(\d{4})/; # à modifier le hash ( les clés ) si besoin my %mois = ( jan => '0', fev => '1', mar => '2', avr => '3', mai => '4', jui => '5', jul => '6', aug => '7', sep => '8', oct => '9', nov => '10', dec => '11', ); my $d1 = timelocal ($5,$4,$3,$2,$mois{lc($1)},$6); my ($s,$m,$h,$j,$mm,$a) = localtime($d1); $mm +=1 and $a += 1900; $j = sprintf("%02d",$j); $mm = sprintf("%02d",$mm); $s = sprintf("%02d",$s); $m = sprintf("%02d",$m); $h = sprintf("%02d",$h); print "$a-$mm-$j $h:$m:$s\n"; __END__ J'ai fait à la main le formatage Il y a le module Date:Manip sur CPAN Voir la fonction ParseDatelami20j
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 567
19 août 2006 à 09:11
19 août 2006 à 09:11
Salut,
et voilà la même chose avec le module Date::Manip (que tu dois le télécharger depuis le CPAN
https://metacpan.org/pod/release/SBECK/DateManip-5.44/Manip.pod et ensuite l'installer (voir le fichier INSTALL)
__END__
et voilà la même chose avec le module Date::Manip (que tu dois le télécharger depuis le CPAN
https://metacpan.org/pod/release/SBECK/DateManip-5.44/Manip.pod et ensuite l'installer (voir le fichier INSTALL)
#!/usr/bin/perl # use warnings;use strict; # utilisation de module Date::Manip # use Date::Manip qw(UnixDate); # date à convertire dans le format 'YYYY-MM-DD HH:MI:SS' my $date = 'Fri Aug 18 04:15:27 2006'; # la conversion my $res_d = UnixDate($date,"%Y-%m-%d %H:%M:%S"); # l'affichage print $res_d,"\n";lami20j
__END__
Salut lami20j ,
Merçi pour tous ces bouts de code...avec ça je devrais arriver à m'en sortir ...quand les admins UNIX auront installé le module DateTime et recompilé le kernel PERL ...
C'est pas un module de natif dans PERL , on peut aller chercher ce module où ?
Merci encore
Dom'
Merçi pour tous ces bouts de code...avec ça je devrais arriver à m'en sortir ...quand les admins UNIX auront installé le module DateTime et recompilé le kernel PERL ...
C'est pas un module de natif dans PERL , on peut aller chercher ce module où ?
Merci encore
Dom'
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 567
19 août 2006 à 11:53
19 août 2006 à 11:53
Salut,
il faut voir la version de Perl que tu as
Les modules sont des fichiers avec l'extension .pm.
Les répertoires contenant les modules on les trouves dans le tableau spécial @INC.
J'ai utilisé le module Date::Manip et pas DateTime .
En fait il faut comprendre la syntaxe Date::Manip.
Date::Manip veut dire qu'il y a un répertoire Date dans un des chemins que @INC contient et que dans ce répertoire il y a le fichier Manip.pm.
C'est pas un module de natif dans PERL , on peut aller chercher ce module où ?
perl trouver le jour d une date donnee#9
Dans mes messages je t'ai parlé de CPAN (Comprehensive Perl Archive Network)
https://www.cpan.org/
pour recherche des modules https://metacpan.org/
Date::Manip https://metacpan.org/search?q=date
lami20j
P.S. dans le script perl trouver le jour d une date donnee#8
avec la regex je prend ce que j'ai besoin pour convertir la date en secondes EPOCH et ensuite les secondes EPOCH en date avec ton format.
Testé avec perl, v5.8.4 built for i386-linux-thread-multi
il faut voir la version de Perl que tu as
perl -vNormalement Time::Local est un module standard.
Les modules sont des fichiers avec l'extension .pm.
Les répertoires contenant les modules on les trouves dans le tableau spécial @INC.
perl -e '$,="\n" and print @INC'Si on veut utiliser nos propres modules on peut utiliser le pragma use lib pour la manipulatin de @INC.
J'ai utilisé le module Date::Manip et pas DateTime .
En fait il faut comprendre la syntaxe Date::Manip.
Date::Manip veut dire qu'il y a un répertoire Date dans un des chemins que @INC contient et que dans ce répertoire il y a le fichier Manip.pm.
C'est pas un module de natif dans PERL , on peut aller chercher ce module où ?
perl trouver le jour d une date donnee#9
Dans mes messages je t'ai parlé de CPAN (Comprehensive Perl Archive Network)
https://www.cpan.org/
pour recherche des modules https://metacpan.org/
Date::Manip https://metacpan.org/search?q=date
lami20j
P.S. dans le script perl trouver le jour d une date donnee#8
avec la regex je prend ce que j'ai besoin pour convertir la date en secondes EPOCH et ensuite les secondes EPOCH en date avec ton format.
Testé avec perl, v5.8.4 built for i386-linux-thread-multi
ce n'est pas un mercredi mais un jeudi
blux
Messages postés
25999
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
23 avril 2024
3 289
6 déc. 2010 à 20:37
6 déc. 2010 à 20:37
Pour répondre des bêtises comme ça, mieux vaut rester chez soi...