LOCALTIME |
Heure local |
|---|---|
Perl |
Syntaxe
| localtime expression |
Paramètres
| Nom | Description |
|---|---|
| expression | Ce paramètre permet d'indiquer un nombre de secondes. |
Retour
| Nom | Description | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| chaine de caractères | Cette chaîne de caractères contient une date selon le format «JourSemaine Mois JourDuMois Heure:Minute:Seconde Année». Exemple: «Thu Sep 21 14:52:52 2000». | |||||||||||
| tableau associatif | Le tableau associatif contient les champs suivants : | |||||||||||
| Index | Description | Intervalle | ||||||||||
| 0 | Ce champ contient les secondes. | 0 à 59 | ||||||||||
| 1 | Ce champ contient les minutes. | 0 à 59 | ||||||||||
| 2 | Ce champ contient les heures. | 0 à 23 | ||||||||||
| 3 | Ce champ contient le jour du mois | 1 à 31 | ||||||||||
| 4 | Ce champ contient le numéro du mois : | 0 à 11 | ||||||||||
| Numéro du mois | Mois | Nombre de jours | Origine | Latin | Provençal | Anglais | Espagnol | Allemand | ||||
| 0 | Janvier | 31 | Janus | Januaris | Janvié | January | Enero | Januar | ||||
| 1 | Février | 28 (29 pour un année bissextile) | Purification | Februarus | Febrié | February | Febrero | Februar | ||||
| 2 | Mars | 31 | Mars | Martius | Mars | March | Marzo | März | ||||
| 3 | Avril | 30 | Aphrodite | Aprilis | Abriéu | April | Abril | April | ||||
| 4 | Mai | 31 | Maia | Maius | Mai | May | Mayo | Mai | ||||
| 5 | Juin | 30 | Junon | Junius | Jun | June | Junio | Juni | ||||
| 6 | Juillet | 31 | Jules César | Julius | Juliet | July | Julio | Juli | ||||
| 7 | Août | 31 | Auguste | Augustus | Avoust | August | Agosto | August | ||||
| 8 | Septembre | 30 | Septième | September | Sètembre | September | Septiembre | September | ||||
| 9 | Octobre | 31 | Huitième | October | Óutobre | October | Octubre | Oktober | ||||
| 10 | Novembre | 30 | Neuvième | November | Nouvèmbre | November | Noviembre | November | ||||
| 11 | Décembre | 31 | Dixième | December | Desèmbre | December | Deciembre | Dezember | ||||
| 5 | Ce champ contient l'année à addition à la valeur 1900 | 0 et plus | ||||||||||
| 6 | Ce champ contient le jour de la semaine : | 0 à 7 | ||||||||||
| Valeur | Jour | Origine | Latin | Provençal | Anglais | Espagnol | Allemagne | |||||
| 0 | Dimanche | Soleil | Dies dominicus | Dimenche | Sunday | Domingo | Sonntag | |||||
| 1 | Lundi | Lune | Lunae | Dilun | Monday | Lunes | Montag | |||||
| 2 | Mardi | Mars | Martis | Dimars | Tuesday | Martes | Dienstag | |||||
| 3 | Mercredi | Mercure | Mercoris | Dimèdre | Wednesday | Miércoles | Mittwoch | |||||
| 4 | Jeudi | Jupiter | Jovis | Dijòu | Thursday | Jueves | Donnerstag | |||||
| 5 | Vendredi | Vénus | Veneris | Divèndre | Friday | Viernes | Freitag | |||||
| 6 | Samedi | Sabbat | Sambati | Dissate | Saturday | Sábado | Samstag | |||||
| 7 | Ce champ contient le jour de l'année | 0 à 365 | ||||||||||
| 8 | Ce champ indique s'il s'agit d'une date : | 0, 1, undef | ||||||||||
| Valeur | Description | |||||||||||
| undef | Cette valeur indique qu'une erreur est survenu. Comme lors d'une valeur négatif par exemple. | |||||||||||
| 0 | Cette valeur indique que la date est invalide | |||||||||||
| 1 | Cette valeur indique que la date est valide | |||||||||||
Description
Cette fonction convertie des secondes depuis le 1er janvier 1970 en date et heure.
Remarques
- Conversion depuis l'époque Unix : La fonction localtime convertit un nombre de secondes écoulées depuis le 1er janvier 1970 (l'époque Unix) en une date lisible dans le fuseau horaire local. Cela en fait une fonction essentielle pour afficher des horodatages compréhensibles à l'utilisateur final, en tenant compte des paramètres locaux du système.
- Double nature du retour : localtime peut retourner soit une chaîne de caractères, soit une liste (ou un tableau associatif) selon le contexte d'appel. En contexte scalaire, on obtient une représentation humaine de la date (par exemple, "Thu Sep 21 14:52:52 2000"), tandis qu'en contexte liste, on obtient neuf éléments numériques représentant les composantes de la date.
- Indexation peu intuitive des mois et jours : Les champs retournés par localtime en liste peuvent prêter à confusion : les mois commencent à 0 (janvier), et les années sont comptées à partir de 1900. De même, les jours de la semaine vont de 0 (dimanche) à 6 (samedi). Cette indexation inhabituelle impose des ajustements pour l'affichage ou les comparaisons.
- Fonction non destructrice : localtime est une fonction non destructive : elle ne modifie pas l'entrée (nombre de secondes) et ne modifie pas l'environnement du programme. Elle se contente de retourner une transformation de la date, ce qui la rend sans effet de bord et sûre à utiliser dans toutes les situations.
- Utile pour le débogage et les journaux de bords : Dans les scripts Perl, localtime est très utile pour formater des dates dans les fichiers de journaux de bord, afin de suivre les événements avec un repère temporel clair. C'est une fonction rapide et efficace pour ajouter des horodatages sans avoir à importer de modules supplémentaires comme DateTime.
- Gestion des dates invalides : Lorsque localtime reçoit une valeur invalide (comme une valeur négative de secondes), elle peut retourner undef ou un tableau malformé. Il est donc important de valider l'entrée, notamment si elle est fournie par un utilisateur ou calculée dynamiquement à partir de données non contrôlées.
- Alternative : gmtime pour l'heure UTC : localtime fournit l'heure locale, mais si l'on souhaite obtenir l'heure en temps universel coordonné (UTC), Perl propose la fonction gmtime, qui retourne les mêmes champs mais selon le fuseau horaire GMT. Le choix entre les deux dépend du contexte d'affichage ou de traitement.
- Pas de support natif du fuseau horaire : La fonction localtime ne gère pas explicitement les fuseaux horaires autres que celui du système local. Pour manipuler des dates dans d'autres fuseaux (ex. : convertir une date GMT en heure de Paris), il faut utiliser des modules externes comme Time::Local, DateTime, ou POSIX::strftime.
Exemples
Voici un exemple montrant comment affiché l'heure courante en format ISO :
on obtiendra le résultat suivant si nous sommes le 8 janvier 2009 à 7h11 et 9 secondes du matin :
2009/01/08 07:11:09L'exemple suivant permet de retourner le jour de la semaine à partir d'une date spécifié :
- #!/usr/bin/perl
-
- use POSIX;
-
- sub WeekName($) {
- my ($day) = @_;
- if($day == 1) {
- return "Dimanche";
- } elsif($day == 2) {
- return "Lundi";
- } elsif($day == 3) {
- return "Mardi";
- } elsif($day == 4) {
- return "Mercredi";
- } elsif($day == 5) {
- return "Jeudi";
- } elsif($day == 6) {
- return "Vendredi";
- } elsif($day == 7) {
- return "Samedi";
- }
- return "";
- }
-
- sub DateToWeek($$$) {
- my ($Y,$M,$D) = @_;
- my $mytime = POSIX::mktime(0,0,0,$D,$M-1,$Y-1900,-1,-1,-1);
- my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($mytime);
- return ($wday + 1);
- }
-
- print "Juillet 2011 :\n";
- for(my $I = 1; $I <= 5; $I++) {
- print "2011/07/" . $I . "=" . WeekName(DateToWeek(2011,7,$I))."\n";
- }
-
- print "Aout 2011 :\n";
- for(my $I = 21; $I <= 31; $I++) {
- print "2011/08/" . $I . "=" . WeekName(DateToWeek(2011,8,$I))."\n";
- }
on obtiendra le résultat suivant :
Juillet 2011 :2011/07/1=Vendredi
2011/07/2=Samedi
2011/07/3=Dimanche
2011/07/4=Lundi
2011/07/5=Mardi
Aout 2011 :
2011/08/21=Dimanche
2011/08/22=Lundi
2011/08/23=Mardi
2011/08/24=Mercredi
2011/08/25=Jeudi
2011/08/26=Vendredi
2011/08/27=Samedi
2011/08/28=Dimanche
2011/08/29=Lundi
2011/08/30=Mardi
2011/08/31=Mercredi
Voir également
Langage de programmation - Perl - Référence des modules - POSIX::LOCALTIME
Langage de programmation - Perl - Référence des modules - POSIX::MKTIME
Langage de programmation - PHP - Référence de procédures et fonctions - localtime
Langage de programmation - Fonction C pour Linux - localtime
Références
La Bible Micro Application HTML & Développement Web, Stefan Munz, Wolfgang Nefzger, 2003, ISBN: 2-7429-2898-7, page 1144
Perl/CGI-Programmation avancée Grand Livre, Edition Micro Application, Rolf D. Stoll, 2001, ISBN: 2742919082, page 220