web-dev-qa-db-ja.com

MM / DD / YYYY形式のPerlの今日の日付

私は仕事でPerlプログラムに取り組んでおり、些細な問題(と思う)にこだわっています。 '06/13/2012 'という形式の文字列を作成するだけです(常に10文字なので、10未満の数字の場合は0になります)。

ここに私が持っているものがあります:

use Time::localtime;
$tm=localtime;
my ($day,$month,$year)=($tm->mday,$tm->month,$tm->year);
37
dvanaria

[〜#〜] posix [〜#〜] 関数を1つ使用するだけで、高速に実行できます。日付付きのタスクがたくさんある場合は、モジュール DateTime を参照してください。

use POSIX qw(strftime);

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

Time::Piece 。これはコアモジュールであり、バージョン10以降Perl 5で配布されているため、インストールする必要はありません。

use Time::Piece;

my $date = localtime->strftime('%m/%d/%Y');
print $date;

output

06/13/2012


更新

dmyメソッドを使用することをお勧めします。このメソッドは、結果のフィールド間で使用されるセパレーターである単一のパラメーターを取り、完全な日付/時刻形式を指定する必要を回避します。

my $date = localtime->dmy('/');

これにより、元のソリューションと同じ結果が得られます

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

式は06/13/2012を返します

12
daxim

難しいことをするのが好きなら:

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

Unixシステム用のPerlコード:

# 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

先頭にゼロを付けた数値のフォーマットは、Perlの組み込み関数「sprintf」を使用して簡単に行えます(ドキュメント: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";

これにより、次のことが可能になります。

14.05.2014

1
horshack