私は仕事でPerlプログラムに取り組んでおり、些細な問題(と思う)にこだわっています。 '06/13/2012 'という形式の文字列を作成するだけです(常に10文字なので、10未満の数字の場合は0になります)。
ここに私が持っているものがあります:
use Time::localtime;
$tm=localtime;
my ($day,$month,$year)=($tm->mday,$tm->month,$tm->year);
[〜#〜] posix [〜#〜] 関数を1つ使用するだけで、高速に実行できます。日付付きのタスクがたくさんある場合は、モジュール DateTime を参照してください。
use POSIX qw(strftime);
my $date = strftime "%m/%d/%Y", localtime;
print $date;
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('/');
これにより、元のソリューションと同じ結果が得られます
use DateTime qw();
DateTime->now->strftime('%m/%d/%Y')
式は06/13/2012
を返します
難しいことをするのが好きなら:
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
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";
先頭にゼロを付けた数値のフォーマットは、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