SELFHTML

Fonctions pour les date et heure

Page d'information: vue d'ensemble

vers le bas Généralités sur ces fonctions
vers le bas gmtime - déchiffrer le moment en éléments date et heure (heure de Greenwich)
vers le bas localtime - déchiffrer le moment en éléments date et heure (heure locale)
vers le bas time - rechercher le moment

 vers le bas 

Généralités sur ces fonctions

La fonction de base pour le calcul du temps sous Perl est vers le bas time. Elle recherche le moment actuel et cela en secondes qui se sont écoulées depuis le "bang" Unix logique, le 1/1/1970, à 0.00 heures. Avec ce chiffre, il est possible d'alimenter une des fonctions vers le bas localtime ou vers le bas gmtime pour recevoir les différent éléments de la date et de l'heure du moment présent, donc par exemple le jour, le mois l'année ou bien la partie heures et la partie minutes de l'heure.

Le Autre page d'information module standard Time::Local est lui aussi digne d'intérêt. Vous y trouverez les fonctions inverses à celles qui sont présentées ici vers le bas localtime et vers le bas gmtime.

 vers le hautvers le bas 

gmtime - déchiffrer le moment en éléments date et heure (heure de Greenwich)

Fonctionne exactement comme vers le bas localtime, à la différence près que ce n'est pas l'heure de l'ordinateur qui est trouvée mais celle du méridien de Greenwich (méridien zéro).

 vers le hautvers le bas 

localtime - déchiffrer le moment en éléments date et heure (heure locale)

Recherche pour un moment précis les différentes mentions de temps.

Attend comme paramètre:
1. le nombre de secondes écoulées à partir du 1/1/1970, jusqu'au moment précis désiré. Pour rechercher les données pour l'instant présent, ne rien transmettre ou simplement time.

Renvoie au choix une liste qui comprend 9 éléments dans lesquels les différentes données sont sauvegardées ou bien une chaîne de caractères conforme à la fonction C ctime, qui fait partie du standard ANSI.

Exemple d'un script CGI complet en Perl:

#!/usr/bin/perl -w

use strict;
use CGI::Carp qw(fatalsToBrowser);

my ($secondes, $minutes, $heures, $jour_mois, $mois,
    $an, $jour_semaine, $jour_calendaire, $heure_ete) = localtime(time);
my $CTIME_String = localtime(time);
$mois+=1;
$jour_calendaire+=1;
$mois = $mois < 10 ? $mois = "0".$mois : $mois;
$jour_mois = $jour_mois < 10 ? $jour_mois = "0".$jour_mois : $jour_mois;
$heures = $heures < 10 ? $heures = "0".$heures : $heures;
$minutes = $minutes < 10 ? $minutes = "0".$minutes : $minutes;
$secondes = $secondes < 10 ? $secondes = "0".$secondes : $secondes;
$an+=1900;
my @noms_de_jours = ("Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi");
my @noms_de_mois = ("","Janvier","F&eacute;vrier","Mars","Avril","Mai","Juin",
           "Juillet","Ao&ucirc;t","Septembre","Octobre","Novembre","D&eacute;cembre");


print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
print "<html><head><title>Sortie du test</title></head><body>\n";
print "Datum (Variante 1): $noms_de_jours[$jour_semaine], le $jour_mois.$mois.$an<br>\n";
print "Datum (Variante 2): $noms_de_jours[$jour_semaine], le $jour_mois. $noms_de_mois[$mois] $an<br>\n";
print "heure (Variante 1): $heures.$minutes Uhr<br>\n";
print "heure (Variante 2): $heures.$minutes:$secondes Uhr<br>\n";
print "Aujourd'hui nous sommes le $jour_calendaire&egrave;me jour de l'année<br>\n";
print "La sortie CTIME de ces date et heure donne: $CTIME_String<br>\n";
$heure_ete ? print "est l'heure d'&eavute;t&eacute;\n" : print "est l'heure normale (pas  l'heure d'&eavute;t&eacute;)\n";
print "</body></html>\n";

Explication:

L'exemple recherche les mentions de temps des date et heure actuelles et cela une fois dans un contexte de liste (premier appel de localtime), et une fois dans un contexte scalaire (deuxième appel). Ensuite, le script prépare les données trouvées pour la sortie. Car les valeurs renvoyées sont dans de nombreux cas plutôt des "données brutes", qui doivent encore être traitées pour une sortie correcte.
Les valeurs pour $mois et $jour_calendaire sont tout d'abord augmentées de 1, étant donné que le comptage commence à 0 en interne pour la valeur renvoyée, pour les mois les valeurs trouvées vont donc par exemple de 0 à 11 et non pas comme il est d'usage de 1 à 12.
Ensuite, certaines de mentions sont formatées de telle façon qu'elles commencent par 0 au cas où leur valeur est inférieure à 10. car une mention de l'heure comme 8.1 est bien sûr indésirable, mais la sortie doit être finalement 08.01. On obtient cela à l'aide d'une Autre page d'information Simple requête soit..., soit....
L'année est augmentée de 1900. La raison en est que la valeur renvoyée pour l'année est le nombre d'années depuis 1900. Pour l'année 2000 donc c'est donc 100 par exemple qui est renvoyé. En y ajoutant 1900, on arrive donc au nombre d'années effectif.
Les listes définies ensuite pour les jours de semaine et les noms de mois offrent la possibilité d'employer des désignations en langue française de la date pour une sortie ultérieure.
Le script en exemple envoie du code HTML au navigateur et sort les données trouvées. Ici le script peut se fier aux données après traitement.

 vers le hautvers le bas 

time - rechercher le moment

Recherche le nombre de secondes qui se sont écoulées depuis le 1/1/1970 jusqu'au moment de l'appel.

N'attend aucun paramètre.

Renvoie le nombre de secondes.

Exemple d'un script CGI complet en Perl:

#!/usr/bin/perl -w

use strict;
use CGI::Carp qw(fatalsToBrowser);

my $secondes = time();
my $heures = int($secondes / 3600);
my $jours = int($secondes / (24 * 3600));
my $semaines = int($secondes / (7 * 24 * 3600));

print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
print "<html><head><title>Sortie du test</title></head><body>\n";
print "depuis le 1/1/1970 à 0.00 heure se sont écoulées $secondes secondes.<br>\n";
print "Ce qui donne $heures heures, $jours jours et $semaines semaines.\n";
print "</body></html>\n";

Explication:

L'exemple appelle time et sauvegarde la valeur retournée par la fonction dans la scalaire $secondes. Ensuite, le script calcule à partir du nombre de secondes, l'équivalent en heures, en jours et en semaines. Pour obtenir à chaque fois la partie avant la virgule des résultats présentant des décimales, la fonction Autre page d'information int leur est appliquée. Pour le contrôle, le script envoie du code HTML au navigateur et sort les nombres trouvés.

 vers le haut
page suivante Autre page d'information Fonctions pour l'entrée et la sortie et la lecture et l'écriture de données
page précédente Autre page d'information Fonctions pour le contrôle du script en cours
 

© 2001 Stefan Münz / © 2003 Traduction Adresse électronique Serge François, 13405@free.fr
Adresse électronique selfhtml@fr.selfhtml.org