package FrDate; our $VERSION = "1.3"; our @ISA = qw( Exporter ); our @EXPORT = qw( maintenant datefichier ); our @lsto = ""; sub maintenant { my($mod_affichage) = @_; @lsto = localtime(time); $now= 1; &convert_time; } sub datefichier { my($mod_affichage, $opd, $file)= @_; $now = 0; @st = stat($file); $atfs = $st[8]; $mtfs = $st[9]; $ctfs = $st[10]; #-----------------choix des options if ($opd == 1) { @lsto = localtime($mtfs); $lbl = "Modif"; &convert_time; } elsif ($opd == 2) { @lsto = localtime($ctfs); $lbl = "Change"; &convert_time; } elsif ($opd == 3) { $now = 1; @lsto = localtime($atfs); $lbl = "Acces"; &convert_time; $frt = "$lbl " . "$frd" . " _"; @lsto = localtime($mtfs); $lbl = "Modif"; &convert_time; $frt += "$lbl " . "$frd" . " _"; @lsto = localtime($ctfs); $lbl = "Change"; &convert_time; $frt += "$lbl " . "$frd"; } else { @lsto = localtime($atfs); $lbl = "Acces"; &convert_time($mod_affichage, $opd, $file); } } sub convert_time { my($mod_affichage, $opd, $file)= @_; my @lsjour = qw( Dimanche Lundi Mardi Mercredi Jeudi Vendredi Samedi ); for $i(0 ..6) { $fj{$i} = $lsjour[$i]; } my @lsmois = qw( Janvier Février Mars Avril Mai Juin Juillet Aout Septembre Octobre Novembre Décembre ); for $i(0..11) { $fm{$i} = $lsmois[$i]; } for (@lsto) { $sjour = "$fj{$lsto[6]}"; $sjour_sm = "\l$sjour"; $abrev_sjour = substr($sjour, 0, 3); $smois = "$fm{$lsto[4]}"; $smois_sm = "\l$smois"; $abrev_smois = substr($smois, 0, 3); if ($lsto[5] <= 100) { $paa = $lsto[5]; $aa = "19" . "$lsto[5]"; $haa=chr("$lsto[5]" -10); } else { $paa = ("$lsto[5]"-100); $aa = "200" . ("$lsto[5]"-100); $haa=chr("$lsto[5]" - 3); } # mois idem localtime(x)[4] + 1 (because janvier = 0) if ($lsto[4] <= 8) { $mm = "0" . ("$lsto[4]" + 1); $hmm = chr("$lsto[4]" + 97); } else { $mm = ("$lsto[4]" + 1); $hmm = chr("$lsto[4]" + 97); } # jour idem localtime(x)[3] + 1 (because le 1 démarre à 0) if ($lsto[3] <= 8) { $jj = "0" . "$lsto[3]"; $hjj = chr("$lsto[3]" + 65); } else { $jj = $lsto[3]; $hjj = chr("$lsto[3]" + 97); } # les heures if ($lsto[2] <= 9) { $hh = "0" . "$lsto[2]"; $hhh = chr("$lsto[2]" + 65); } else { $hh = $lsto[2]; $hhh = chr("$lsto[2]" + 65); } # les minutes if ($lsto[1] <= 9) { $mn = "0" . "$lsto[1]"; $hmn = chr("$lsto[1]" + 48); } else { $mn = $lsto[1]; if ($lsto[1] <= 34) { $hmn = chr("$lsto[1]" + 65); } else { $hmn = chr("$lsto[1]" + 97); } } # les secondes if ($lsto[0] <= 9) { $ss = "0" . "$lsto[0]"; $hss = chr("$lsto[0]" + 48); } else { $ss = $lsto[0]; if ($lsto[1] <= 34) { $hss = chr("$lsto[0]" + 65); } else { $hss = chr("$lsto[0]" + 97); } } } if ($mod_affichage == 1) { if ($now == 1) { #Mardi 03 Mars 2004 $frd = "$sjour $jj $smois $aa"; } else { $frd = "$sjour $jj $smois $aa"; return $frd; } } elsif ($mod_affichage == 2) { if ($now == 1) { #mardi 03 Mars 2004 $frd = "$sjour_sm $jj $smois $aa"; } else { $frd = "$sjour_sm $jj $smois $aa"; return $frd; } } elsif ($mod_affichage == 3) { if ($now == 1) { # 1040309152528 $fd = "$lsto[5]" . "$mm" . "$jj" . "$hh" . "$mn" . "$ss"; return $fd; } else { $frd = "$lsto[5]" . "$mm" . "$jj" . "$hh" . "$mn" . "$ss"; return $frd; } } elsif ($mod_affichage == 4) { if ($now == 1) { # 20040309-XHU $fd = "$aa" . "$mm" . "$jj" . "$hhh" . "$hmn" . "$hss"; return $fd; } else { $frd = "$aa" . "$mm" . "$jj" . "$hhh" . "$hmn" . "$hss"; return $frd; } } elsif ($mod_affichage == 5) { if ($now == 1) { # G-0309-HTY $fd = "$haa-" . "$mm" . "$jj-" . "$hhh" . "$hmn" . "$hss"; return $fd; } else { $frd = "$haa-" . "$mm" . "$jj-" . "$hhh" . "$hmn" . "$hss"; return $frd; } } elsif ($mod_affichage == 6) { if ($now == 1) { # HMJU7X $fd = "$haa" . "$hmm" . "$hjj" . "$hhh" . "$hmn" . "$hss"; return $fd; } else { $frd = "$haa" . "$hmm" . "$hjj" . "$hhh" . "$hmn" . "$hss"; return $frd; } } elsif ($mod_affichage == 7) { if ($now == 1) { # jeudi 18 Mars 2004 15:14:28 $fd = "$sjour_sm $jj $smois $aa" . " $hh:$mn:$ss"; return $fd; } else { $frd = "$sjour_sm $jj $smois $aa" . " $mn:$ss"; return $frd; } } elsif ($mod_affichage == 8) { if ($now == 1) { # lun 09 Oct 18h24:11 $fd = "$abrev_sjour $jj $abrev_smois $hh" . "h$mn:" . "$ss"; return $fd; } else { $frd = "$abrev_sjour $jj $abrev_smois $hh" . "h$mn:" . "$ss"; return $frd; } } elsif ($mod_affichage == 9) { if ($now == 1) { # lun 09 Oct $fd = "$abrev_sjour $jj $abrev_smois"; return $fd; } else { $fd = "$abrev_sjour $jj $abrev_smois"; return $frd; } } elsif ($mod_affichage == 10) { if ($now == 1) { # mardi 09/03/04 15:09:28 $fd = "$sjour_sm $jj\/$mm\/$paa $hh:$mn:$ss"; return $fd; } else { $frd = "$sjour_sm $jj\/$mm\/$paa $hh:$mn:$ss"; return $frd; } } elsif ($mod_affichage == 11) { if ($now == 1) { # Mardi 09 Jan 04 15:09:28 $fd = "$sjour $jj $abrev_smois $paa $hh:$mn:$ss"; return $fd; } else { $frd = "$sjour $jj $abrev_smois $paa $hh:$mn:$ss"; return $frd; } } elsif ($mod_affichage == 12) { if ($now == 1) { # mardi 09 Jan 2004 14:30:28 $fd = "$sjour_sm $jj $abrev_smois $aa $hh:$mn:$ss"; return $fd; } else { $frd = "$lbl $sjour_sm $jj $abrev_smois $aa $hh:$mn:$ss"; return $frd; } } else { if ($now == 1) { # mardi 09/03/2004 15:09:28 $fd = "$sjour_sm $jj\/$mm\/$aa $hh:$mn:$ss"; return $fd; } else { $frd = "$sjour_sm $jj\/$mm\/$aa $hh:$mn:$ss"; return $frd; } } } END; =head1 NOM frenchdate - donne l heure et la date en français =head1 SYNTHAXE Use FrDate; maintenant($mod_affichage); # donne la date et l'heure du moment sous le format adéquat (0..12) datefile($mod_affichage, $opd, $file); # idem suivant $opd(accés,modif,change). # donne la date du fichier $file suivant ($opd: dernier access, modif, chang) # au format défini par $mod_affichage: # affichage date $opd $mod_affichage # Mardi 09/01/2004 15:09:28 Defaut| Defaut | désignation # Mardi 03 Mars 2004 (3) (1) (date du dernier changement d'inode) # mardi 03 Mars 2004 (-) (2) (date de dernier accés) # 1040309152528 (2) (3) (date de dernier accés) # 20040309-XHU ( ) (4) (date de dernier accés) # H-0309-U7X (1) (5) (date de la derniére modification) # HTMXHU ( ) (6) (date de dernier accés) # jeudi 18 Mars 2004 15:14:28 (3) (7) (date du dernier changement d'inode) # jeu 09 Oct 18h24:11 (1) (8) (date de la derniére modification) # Jeu 09 Oct 2004 # Acces: mardi 09/03/04 15:09:28 ( ) (9) (date de dernier accés) # Modif: lun 09 Oct 18h24:11 (1) (10) (date de la derniére modification) Mercredi 11/12/2003 18:45 ou 20031211 ou 1031211184503 ou M-1211-UHX ou Mer 09 Oct 12h45:28, etc.... =head1 DESCRIPTION La variable scalaire retourné par le module sera une date en français formater selon votre besoin pour: B avec $frd = ffdt($file, $opd, $mod_affichage) ou B<$file> est le nom du fichier B<$opd> est un chiffre de 0 a 2 representant: 0 date de dernier acces 1 date de derniére modification 2 date du dernier changement d inode B<$mod_affichage> est un chiffre de 0 a 6 representant: # mardi 09/03/2004 15:09:28 (Defaut) # mardi 03 Mars 2004 (1) # 1040309152528 (2) # HMJU7X (3) # jeudi 18 Mars 2004 15:14:28 (4) # jeudi 18h24mn et 11secondes (5) # mardi 09/03/04 15:09:28 (6) pour 0 la date comme: Mercredi 11/12/2003 18:45 (par defaut) pour 1 la date comme: Mercredi 11 Decembre 2003 (pour la Secla) pour 2 la date comme: 20031211184503 (pour liste et filename) pour 3 la date comme: AMJhms (en caractéres acsii triable) pour 4 la date comme: jeudi 18h24mn et 11secondes pour 5 la date comme: AMJc (en caractére acsii triable comme AMJ et centieme de jour) expl: si je veux la date du dernier acces en format liste je demanderai: $file = $foo; $opd = 0; $mod_affichage =2; $frd = datefichier($mod_affichage, $opd, $file); pour savoir la date et l'heure du moment present: $fd = maintenant($mod_affichage); =head1 AUTEUR Ce script à été écrit par Alain Adelmar aadelmar@free.fr publié sur http://aadelmar.free.fr/FrDate4File.html adresse : 6 rue de Tunis 33600 Pessac France =cut