Compte à rebours [Perl] - Perl - Programmation
Marsh Posté le 13-06-2003 à 13:02:43
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 !
merci
Marsh Posté le 13-06-2003 à 15:00:46
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 :
|
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...
Marsh Posté le 13-06-2003 à 12:53:37
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 !!
Message édité par Ethan_carter le 13-06-2003 à 12:57:49