Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
593 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  [Perl] Compte à rebours

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Perl] Compte à rebours

n°426340
Ethan_cart​er
Posté le 13-06-2003 à 12:53:37  profilanswer
 

Bonjour,
 
j'ai crée un compteur pour mon site internet qui est un compte à rebours du style de J-xx avant Noêl.
 
Mais le programme est compliqué, et je pense qu'il est faux.
Pourriez-vous me dire ce que vous en pensez ? J'ai eu du mal avec les années bissextiles.  
 
sub compteur {
 
$date_echeance = 171;
$annee_echeance = 2003;
$decalage_horaire = 6;
 
# Demande de la date
$decalage = time + ($decalage_horaire * 3600);
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($decalage);
$year += 1900;
 
# Calcul du compte à Rebours
$y = (($date_echeance - $yday) + (($annee_echeance - $year)*365));
 
# On corrige si c'est une année bissextile
foreach ($year..$annee_echeance) {
 
 # L'année est bissextile
 if (&leap($_) == 2) {
 
  # L'année en cours est l'année d'échéance
  if ("$year" eq "$annee_echeance" ) {
   
   # On ajoute 1 si le 29 Février est inclus dans le décompte
   if (($date_echeance <= 59) and ($yday <= 59)) {$y++}
 
  # Sinon
  } else {
 
   # Si un 29 Février arrive dans l'année en cours ...
   if (($_ eq "$year" ) and ($yday <= 59)) {$y++}
 
   # Si un 29 Février existe dans l'année d'échéance
   elsif (($_ eq "$annee_echeance" ) and ($date_echeance >= 59)) {$y++}
   
   # Si une année bissextile existe pour une année située au centre de la boucle
   else {$y++}
     
    }
     
}
     
}
 
}
 
sub leap {
 
my $year = shift;
 
# C'est quoi une année Bissextile ?
 
 unless ($year % 4) {
 
 unless ($year % 100) {
 
  unless ($year % 400) {
   
  # Année divisible par 4, 100 et 400 : bissextile
  return "2";
  }
   
  # Année divisible par 4, 100 mais non 400 : non bissextile
  else {
  return "1";
  }
 }
 
 # Année divisible par 4 mais non 100 : bissextile
 else {
 return "2";
 }
}
 
# Année non divisible par 4 : non bissextile
else {
return "1";
}
 
aprés, j'affiche : j-$y avant...
 
(note : il y a peet-être un crochet de trop ou de moins, j'ai supprimé des trucs pour le post..)
 
merci !!  :bounce:


Message édité par Ethan_carter le 13-06-2003 à 12:57:49
mood
Publicité
Posté le 13-06-2003 à 12:53:37  profilanswer
 

n°426355
Ethan_cart​er
Posté le 13-06-2003 à 13:02:43  profilanswer
 

Au fait, je voudrais aussi inclure les minutes et les heures, du style :
il reste 18 jours, 2 heures et 34 minutes.
 
mais je dois admettre que là je n'ai su faire que ça :
 
$y_1 = 23-$hour; $y_2 = 59-$min;
 
$y jours, ${y_1}h et $y_2 minutes
 
ce qui bien sûr ne fonctionne que si l'échéance arrive à minuit !  :kaola:  
merci

n°426725
anapajari
s/travail/glanding on hfr/gs;
Posté le 13-06-2003 à 15:00:46  profilanswer
 

bin perso je me servirais de Local::Time qui est inclus dans toutes les distribs je crois, du coup ça donnerais un script dans le genre:
use Time::Local;

Code :
  1. use Time::Local;
  2. my $nb_secs = timelocal( 0, 0, 0, 25, 11, 2003) - time();


comme ça tu as le nombre de secondes ecoulés entre les deux dates et après t'as plus qu'à secouer un peu pour avoir les heures/jours/mois correspondants...


Message édité par anapajari le 13-06-2003 à 15:01:03
n°426945
Ethan_cart​er
Posté le 13-06-2003 à 17:09:35  profilanswer
 

OK, je vais essayer tout de suite !
 
merci


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  [Perl] Compte à rebours

 

Sujets relatifs
[Perl] Substitution[Perl] Hash et cgi
[Perl] Utiliser un tableau d'une subroutine[Perl] Afficher seulement 2 chiffre après la virgule
script perl / script php: lequel est le plus rapide??[perl] Créer un tableau à 2 dimensions
[Perl] Des couleurs en console ?[Perl/CGI] Appeler une page cgi dans une page cgi ?
[HTML][PERL] 2 frames, cgi, passage de paramètres d'un à l'autreComment exécuter un fichier perl dans une page html ?
Plus de sujets relatifs à : [Perl] Compte à rebours


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR