Lors de l'écriture de scripts Perl, je trouve souvent le besoin d'obtenir l'heure actuelle représentée sous forme de chaîne formatée comme AAAA-MM-JJ HH:MM:SS
(disons 2009-11-29 14:28:29
).
En faisant cela, je me retrouve à emprunter ce chemin assez laborieux :
man perlfunc
/localtime
pour rechercher localtime - répétez cinq fois (/
+\n
) pour atteindre la section pertinente de la page de manuel- Copier la chaîne
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
de la page de manuel vers mon script. - Essayer avec
my $now = sprintf("%04d-%02d-%02d %02d:%02d:%02d", $year, $mon, $mday, $hour, $min, $sec);
- Rappel gotcha n°1 : Doit ajouter 1900 à $year pour obtenir l'année en cours.
- Essayer avec
my $now = sprintf("%04d-%02d-%02d %02d:%02d:%02d", $year+1900, $mon, $mday, $hour, $min, $sec);
- Rappel gotcha n°2 : Doit ajouter 1 à $mon pour obtenir le mois en cours.
- Essayer avec
my $now = sprintf("%04d-%02d-%02d %02d:%02d:%02d", $year+1900, $mon+1, $mday, $hour, $min, $sec);
- Ça semble bon. Terminé !
Alors que le processus décrit ci-dessus fonctionne, il est loin d'être optimal. Je suis sûr qu'il existe un moyen plus intelligent, donc ma question est simplement :
Quel est le moyen le plus simple d'obtenir un AAAA-MM-JJ HH:MM:SS
de la date/heure actuelle en Perl ?
Où "simple" englobe à la fois "facile à écrire" et "facile à retenir".
1 votes
Tu aurais dû écrire une sous-routine pour rechercher dans le perlfunc et se souvenir des pièges pour toi, bien sûr!
0 votes
Ecrire une question sur stackoverflow avec toutes les étapes, en faisant semblant de demander une solution :-)