Heure locale Comment savoir l'heure actuelle en Perl

Perl a une fonction intégrée pratique pour trouver la date et l'heure actuelles dans vos scripts. Cependant, lorsque nous parlons de trouver l'heure, nous parlons de l'heure actuellement définie sur la machine qui exécute le script. Par exemple, si vous exécutez votre script Perl sur votre machine locale, l'heure locale renverra l'heure actuelle que vous avez définie, et vraisemblablement définie sur votre fuseau horaire actuel.

Lorsque vous exécutez le même script sur un serveur Web, vous pouvez constater que l'heure locale est hors de l'heure locale sur votre système de bureau. Le serveur peut se trouver dans un fuseau horaire différent ou être configuré de manière incorrecte. Chaque machine peut avoir une idée totalement différente de l'heure locale et cela peut prendre un certain ajustement, soit dans le script, soit sur le serveur lui-même, pour l'adapter à ce que vous attendez.

La fonction heure locale renvoie une liste complète de données sur l'heure actuelle, dont certaines devront être ajustées. Exécutez le programme ci-dessous et vous verrez chaque élément de la liste imprimé sur la ligne et séparé par des espaces.

#! / usr / local / bin / perl
@timeData = heure locale (heure);
print join (", @timeData);

Vous devriez voir quelque chose de similaire, bien que le nombre puisse être très différent.

20 36 8 27 11 105 2 360 0

Ces éléments de l'heure actuelle sont, dans l'ordre:

  • Secondes après la minute
  • Minutes après l'heure
  • Heures après minuit
  • Jour du mois
  • Mois après le début de l'année
  • Nombre d'années depuis 1900
  • Nombre de jours depuis le début de la semaine (dimanche)
  • Nombre de jours depuis le début de l'année
  • Activer ou non l'heure d'été

Donc, si nous revenons à l'exemple et essayons de le lire, vous verrez qu'il est 8 h 36 min 20 s le 27 décembre 2005, il est 2 jours après dimanche (mardi) et 360 jours depuis le début de la année. L'heure d'été n'est pas active.

Rendre le Perl Localtime lisible

Certains des éléments du tableau renvoyés par l'heure locale sont un peu difficiles à lire. Qui penserait de l'année en cours en termes de nombre d'années après 1900? Jetons un coup d'œil à un exemple qui rend notre date et notre heure plus claires.

 #! / usr / local / bin / perl

 @months = qw (janv. févr. mars avril mai juin juil. août sept. oct. nov. déc.);

 @weekDays = qw (dim lun mar mar jeu ven ven sam dim);

 ($ seconde, $ minute, $ heure, $ dayOfMonth, $ month, $ yearOffset, $ dayOfWeek, $ dayOfYear, $ daylightSavings) = localtime ();

 $ year = 1900 + $ yearOffset;

 $ theTime = "$ hour: $ minute: $ second, $ weekDays [$ dayOfWeek] $ mois [$ month] $ dayOfMonth, $ year";

 imprimer $ theTime; 

Lorsque vous exécutez le programme, vous devriez voir une date et une heure beaucoup plus lisibles comme celle-ci:

 9:14:42, mer 28 déc.2005 

Alors, qu'avons-nous fait pour créer cette version plus lisible? Tout d'abord, nous préparons deux tableaux avec les noms des mois et des jours de la semaine.

 @months = qw (janv. févr. mars avril mai juin juil. août sept. oct. nov. déc.);

 @weekDays = qw (dim lun mar mar jeu ven ven sam dim); 

Étant donné que la fonction d'heure locale renvoie ces éléments dans des valeurs allant respectivement de 0-11 et 0-6, ils sont des candidats parfaits pour un tableau. La valeur retournée par localtime peut être utilisée comme une adresse numérique pour accéder à l'élément correct dans le tableau.