Maison > Article > développement back-end > Comment représenter l'heure actuelle en Perl
Perl dispose d'une fonction intégrée pratique pour trouver la date et l'heure actuelles dans un script. Cependant, lorsque nous parlons de trouver l'heure, nous parlons de l'heure actuellement définie sur la machine exécutant le script. Par exemple, si vous exécutez un script Perl sur votre ordinateur local, localtime renverra l'heure actuelle que vous avez définie, et éventuellement celle de votre fuseau horaire actuel.
Lors de l'exécution du même script sur le serveur Web, vous constaterez peut-être que l'heure locale sur le système de bureau est décalée de l'heure locale. Le serveur peut se trouver dans un fuseau horaire différent ou avoir des paramètres incorrects. Chaque machine peut avoir une idée complètement différente de l'heure locale, et cela peut nécessiter quelques ajustements dans le script ou sur le serveur lui-même pour qu'elle corresponde à ce que vous attendez.
La fonction localtime renvoie une liste contenant les données d'heure actuelle, dont certaines doivent être ajustées. Exécutez le programme ci-dessous et vous verrez chaque élément de la liste imprimé sur une ligne et séparé par des espaces.
#!/usr/local/bin/perl @timeData = localtime(time); print join(' ', @timeData);
Vous devriez voir quelque chose de similaire, bien que les chiffres puissent être significativement différents.
20 36 8 27 11 105 2 360 0
Ces éléments de l'heure actuelle sont dans l'ordre :
- une minute passée
- plusieurs minutes passées
- minuit
- Jour du mois
- Mois depuis le début de la semaine
- Nombre d'années depuis 1900
- Nombre d'années depuis le début de la semaine Nombre de jours (dimanche)
- Nombre de jours depuis le début de l'année
- Si l'heure d'été est en vigueur
Rendre l'heure locale Perl lisible
renvoyé par localtime Certains éléments du tableau se lisent un peu maladroitement. Qui penserait à cette année en termes d’années après 1900 ? Prenons un exemple pour clarifier nos dates et nos heures.
Lorsque vous exécutez ce programme, vous verrez une date et une heure plus lisibles, comme ceci :
9:14:42, Wed Dec 28, 2018
Alors, qu'avons-nous fait pour créer cela plus lisible ? Et la bonne version d'abord ? , nous préparons deux tableaux contenant les noms des mois et des jours de la semaine.
@months = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec); @weekDays = qw(Sun Mon Tue Wed Thu Fri Sat Sun);
Puisque la fonction localtime renvoie ces éléments avec des valeurs comprises entre 0-11 et 0-6, ce sont les meilleurs candidats pour le tableau. La valeur renvoyée par localtime peut être utilisée comme adresse numérique pour accéder au bon élément du tableau.
$months[$month] $weekDays[$dayOfWeek]
L'étape suivante consiste à obtenir toutes les valeurs de la fonction localtime. Dans cet exemple, nous utilisons un raccourci Perl pour placer automatiquement chaque élément du tableau localtime dans sa propre variable. Nous choisissons des noms pour qu'il soit plus facile de se souvenir de quel élément il s'agit.
($second, $minute, $hour, $dayOfMonth, $month, $yearOffset, $dayOfWeek, $dayOfYear, $daylightSavings) = localtime();
Nous devons également ajuster la valeur pour l'année. N'oubliez pas que l'heure locale renvoie le nombre d'années depuis 1900, donc pour trouver l'année en cours, nous devons ajouter 1900 à la valeur donnée.
$year = 1900 + $yearOffset;
Comment représenter le temps universel actuel en Perl
Supposons que vous souhaitiez éviter toute confusion possible de fuseau horaire et contrôler votre propre décalage horaire. Obtenir l'heure actuelle en heure locale renverra toujours une valeur basée sur le paramètre de fuseau horaire de la machine : un serveur aux États-Unis renverra une heure, tandis qu'un serveur en Australie renverra une heure qui est presque entièrement différente tout au long de la journée en raison du fuseau horaire. différences.
Perl dispose également d'une deuxième fonction pratique d'indication de l'heure qui fonctionne exactement comme l'heure locale, mais au lieu de renvoyer une heure fixe dans le fuseau horaire de la machine, elle renvoie le temps universel coordonné (UTC, également connu sous le nom de temps moyen de Greenwich ou GMT). ). Tout simplement, la fonction s'appelle gmtime
#!/usr/local/bin/perl @timeData = gmtime(time); print join(' ', @timeData);
Il n'y a pas de différence entre les fonctions gmtime et localtime sauf que l'heure renvoyée est la même sur chaque machine qu'en GMT. Toutes les données et transformations sont effectuées de la même manière.
#!/usr/local/bin/perl @months = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec); @weekDays = qw(Sun Mon Tue Wed Thu Fri Sat Sun); ($second, $minute, $hour, $dayOfMonth, $month, $yearOffset, $dayOfWeek, $dayOfYear, $daylightSavings) = gmtime(); $year = 1900 + $yearOffset; $theGMTime = "$hour:$minute:$second, $weekDays[$dayOfWeek] $months[$month] $dayOfMonth, $year"; print $theGMTime;
1.localtime renverra l'heure locale actuelle sur la machine exécutant le script.
2.gmtime renverra le temps moyen universel de Greenwich, ou GMT (ou UTC).
3. La valeur de retour peut ne pas être celle que vous attendez, alors assurez-vous de la convertir si nécessaire.
Recommandations associées : "Tutoriel Perl"http://www.php.cn/course/list/39.html
Cet article Cet article explique comment utiliser Perl pour représenter l'heure actuelle. J'espère qu'il sera utile aux amis dans le besoin !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!