# package FrDate4File;

local $frd = &ffdt($file, $opd, $mod_affichage);


sub ffdt($file, $opd, $mod_affichage) {
  my($file)=@_;
  my($opd)=@_;
  my($mod_affichage)=@_;
 
  local @lsjour = qw(

		     Dimanche
		     Lundi
		     Mardi
		     Mercredi
		     Jeudi
		     Vendredi
		     Samedi
		    );
  
  for $i(0 ..6) {
    $fj{$i} = $lsjour[$i];
  }
  
  local @lsmois = qw(
		     Janvier
		     Février
		     Mars
		     Avril
		     Mai
		     Juin
		     Juillet
		     Aout
		     Septembre
		     Octobre
		     Novembre
		     Décembre
		    );

  for $i(0..11) {
    $fm{$i} = $lsmois[$i];
  }
  
  #------pour afficher la date de fichier comme: 01/05/2003 20:05:30
  if ($file eq ""|0) {
  	 @st = localtime(time);
		 $now= 1;
	 	}
  else {
		$now = 0;
    @st = stat($file);
		$atfs = $st[8];
  	$mtfs = $st[9];
  	$ctfs = $st[10];
		}
  
  
  #-----------------choix des options 
  if ($opd == 1) {
    @ls_mtfs = localtime($mtfs);
    $lbl = "Modif";
    &convert_time(@ls_mtfs, $lbl);
  }
  elsif ($opd == 2) {
    @ls_ctfs = localtime($ctfs);
    $lbl = "Change";
    &convert_time(@ls_ctfs, $lbl);
  }
  elsif ($opd == 3) {
    $all = 1;
    @ls_atfs = localtime($atfs);
    $lbl = "Acces";
    &convert_time(@ls_atfs, $lbl);
    $frt = "$lbl " . $frd . " _"; 
    @ls_mtfs = localtime($mtfs);
    $lbl = "Modif";
    &convert_time(@ls_mtfs, $lbl);
    $frt += "$lbl " . $frd . " _";
    @ls_ctfs = localtime($ctfs);
    $lbl = "Change";
    &convert_time(@ls_ctfs, $lbl);
    $frt += "$lbl " . $frd;
  }
  else {
    @ls_atfs = localtime($atfs);
    $lbl = "Acces";
    &convert_time(@ls_atfs, $lbl);
  }
}
 


sub convert_time(@ls) {
  my(@ls)=@_;
  
  for (@ls) {
    $sjour = "$fj{$ls[6]}";
    $smois = "$fm{$ls[4]}";
    if ($ls[5] <= 100) {
      $aa = "19" . "$ls[5]";
			$haa=chr("$ls[5]" -10);
    }
    else {
      $aa = "200" . ("$ls[5]"-100);
			$haa=chr("$ls[5]" - 3); 
    }
    
    # mois idem localtime(x)[4] + 1 (because janvier = 0)
    if ($ls[4] <= 8) {
      $mm = "0" . ("$ls[4]" + 1);
			$hmm = chr("$ls[4]" + 97); 
    }
    else {
      $mm = ("$ls[4]" + 1);
			$hmm = chr("$ls[4]" + 97); 
    }
    # jour idem localtime(x)[3] + 1 (because le 1 démarre à 0)
    if ($ls[3] <= 8) {
      $jj = "0" . "$ls[3]";
			$hjj = chr("$ls[3]" + 65); 
    }
    else {
      $jj = $ls[3];
			$hjj = chr("$ls[3]" + 97);
    }
    # les heures
    if ($ls[2] <= 9) {
      $hh = "0" . "$ls[2]";
			$hhh = chr("$ls[2]" + 65);
    }
    else {
      $hh = $ls[2];
			$hhh = chr("$ls[2]" + 65);
    }
     # les minutes
    if ($ls[1] <= 9) {
      $mn = "0" . "$ls[1]";
			$hmn = chr("$ls[1]" + 48);
    }
    else {
      $mn = $ls[1];
			elsif ($ls[1] <= 34) {
				$hmn = chr("$ls[1]" + 65);
				}
			else {
				$hmn = chr("$ls[1]" + 97);
				}
    }
     # les secondes
    if ($ls[0] <= 9) {
      $ss = "0" . "$ls[0]";
			$hss = chr("$ls[0]" + 48);
    }
    else {
      $ss = $ls[0];
			elsif ($ls[1] <= 34) {
				$hss = chr("$ls[0]" + 65);
				}
			else {
				$hss = chr("$ls[0]" + 97);
				}
    }
  }
  
  if ($mod_affichage == 1) {
    if ($all == 1) {
      $frd = "$sjour $jj $smois $aa";
    }
    else {
      $frd = "$sjour $jj $smois $aa";
      return $frd;
    }
  }
  elsif ($mod_affichage == 2) {
    if ($all == 1) {
      $frd = "$aa" . "$mm" . "$jj" . "$hh" . "$mn" . "$ss"
    }
    else {
      $frd = "$aa" . "$mm" . "$jj" . "$hh" . "$mn" . "$ss";
      return $frd;
    }
  }
  elsif ($mod_affichage == 3) {
    if ($all == 1) {
      $frd = "$haa" . "$hmm" . "$hjj" . "$hhh" . "$hmn" . "$hss";
    }
    else {
			$frd = "$haa" . "$hmm" . "$hjj" . "$hhh" . "$hmn" . "$hss";
      return $frd;
    }
  }
	elsif ($mod_affichage == 4) {
    if ($all == 1) {
      $frd = "$sjour  $jj $smois $aa" . " $mn:$ss";
    }
    else {
			$frd = "$sjour  $jj $smois $aa" . " $mn:$ss";
      return $frd;
    }
  }
	elsif ($mod_affichage == 5) {
    if ($all == 1) {
			# jeudi 18h24mn et 11secondes
      $frd = "$sjour $hh" . "h$mn" . "mn et $ss" . "secondes";
    }
    else {
			$frd = "$sjour $hh" . "h$mn" . "mn et $ss" . "secondes";
      return $frd;
    }
  }
  else {
    if ($all == 1) {
      $frd = "$lbl $sjour $jj\/$mm\/$aa $hh:$mn:$ss";
    }
    else {
      $frd = "$lbl $sjour $jj\/$mm\/$aa $hh:$mn:$ss";
      return $frd;
    }
  }
}

END;


=head1 NOM

  frenchdate - donne l heure et la date en français

=head1 SYNTHAXE
  
  $frd =do('FrDate.pl');    # ou $frd sera la date en français au format désiré.
  $frd = ffdt($file, $opd, $modep);   #donne l'heure et la date de now si $file vaut "".
  # done la date du fichier $file suivant ($opd:dernier access, modif,chang) 
  # au format suivant ($modep: Mercredi 11/12/2003 18:45 ou 20031211 ou 20031211184503).

=head1 DESCRIPTION

  La variable scalaire retourné par le module sera une date en français
  formater selon votre besoin pour: 

    B<la date du fichier> 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 2 representant:
        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 = ffdt($file, $opd, $modep);


=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