Je travaille sur un programme Perl au travail et je suis bloqué (ce que je pense est) un problème trivial. J'ai simplement besoin de construire une chaîne au format '06/13/2012 '(toujours 10 caractères, donc 0 pour les nombres inférieurs à 10).
Voici ce que j'ai jusqu'à présent:
use Time::localtime;
$tm=localtime;
my ($day,$month,$year)=($tm->mday,$tm->month,$tm->year);
Vous pouvez utiliser Time::Piece
, qui ne devrait pas nécessiter d’installation car c’est un module principal et est distribué avec Perl 5 depuis la version 10.
use Time::Piece;
my $date = localtime->strftime('%m/%d/%Y');
print $date;
sortie
06/13/2012
Vous préférerez peut-être utiliser la méthode dmy
, qui prend un seul paramètre qui est le séparateur à utiliser entre les champs du résultat et évite de spécifier un format de date/heure complet
my $date = localtime->dmy('/');
Cela produit un résultat identique à celui de ma solution d'origine
use DateTime qw();
DateTime->now->strftime('%m/%d/%Y')
expression retourne 06/13/2012
Si vous aimez faire les choses à la dure:
my (undef,undef,undef,$mday,$mon,$year) = localtime;
$year = $year+1900;
$mon += 1;
if (length($mon) == 1) {$mon = "0$mon";}
if (length($mday) == 1) {$mday = "0$mday";}
my $today = "$mon/$mday/$year";
use Time::Piece;
...
my $t = localtime;
print $t->mdy("/");# 02/29/2000
Code Perl pour les systèmes Unix:
# Capture date from Shell
my $current_date = `date +"%m/%d/%Y"`;
# Remove newline character
$current_date = substr($current_date,0,-1);
print $current_date, "\n";
La mise en forme des nombres avec le zéro à gauche se fait facilement avec "sprintf", une fonction intégrée à Perl (documentation avec: perldoc perlfunc)
use strict;
use warnings;
use Date::Calc qw();
my ($y, $m, $d) = Date::Calc::Today();
my $ddmmyyyy = sprintf '%02d.%02d.%d', $d, $m, $y;
print $ddmmyyyy . "\n";
Cela vous donne:
14.05.2014