web-dev-qa-db-fra.com

La date du jour en Perl au format MM / JJ / AAAA

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);
37
dvanaria

Vous pouvez le faire rapidement en utilisant une seule fonction POSIX . Si vous avez plusieurs tâches avec des dates, reportez-vous au module DateTime .

use POSIX qw(strftime);

my $date = strftime "%m/%d/%Y", localtime;
print $date;
56
Pavel Vlasov

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


Mise à jour

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

54
Borodin
use DateTime qw();
DateTime->now->strftime('%m/%d/%Y')   

expression retourne 06/13/2012

12
daxim

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";
8
charlesbridge
use Time::Piece;
...
my $t = localtime;
print $t->mdy("/");# 02/29/2000
3
dezhik

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";
2
Bharat

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

1
horshack