私は変数$nowDate
の現在の日付をDateTime
オブジェクトとして保持しています。DateTimeの日付から月、日、年を抽出します
今、私はその変数から月、日、年を引っ張り、それらを自分の変数に割り当てる必要があります。それをどうやってやりますか?
my $nowDate = DateTime->now(time_zone => 'local');
私は変数$nowDate
の現在の日付をDateTime
オブジェクトとして保持しています。DateTimeの日付から月、日、年を抽出します
今、私はその変数から月、日、年を引っ張り、それらを自分の変数に割り当てる必要があります。それをどうやってやりますか?
my $nowDate = DateTime->now(time_zone => 'local');
最も簡単な方法は、ymd`や家族だけのアクセサへの明示的な呼び出しを行う(またはストレートハッシュ外の値を引く) `ので、明示的に
my $nowDate = DateTime->now(time_zone => 'local');
my ($month, $day, $year) = ($nowDate->month, $nowDate->day, $nowDate->year);
DateTimeは、これらの方法、year
(YYYY)、month
(1-12)、そしてあなたが一桁の月得ることができますday
(1-31)
my ($year, $month, $day) = map { $nowDate->$_ } qw(year month day);
注意を持っています(05
ではなく)5
のような、5月の日付または日です。アプリケーションが2桁の形式を使用している場合は、map { sprintf "%02d", $nowDate->$_ }
が必要になることがあります。
それとも
my ($year, $month, $day) = split '-', $nowDate->ymd; # 2017-05-09
または
my ($year, $month, $day) = unpack "A4A2A2", $nowDate->ymd(''); # 20170509
方法ymd
は、セパレータを指定することができますが、デフォルトは-
され、たとえば、$nowDate
からそれらを引くことができます。ドキュメントを参照してください。
それらを取得することで、構築するために' sprintf'を使用結果、私は 'wantarray'をチェックし、スカラーコンテキストで値のリストを返す良いケースがあると思います。もちろん、このような変更によって、 'my @dmy = $ date-> dmy'という奇妙なコードが壊れることになります。 – Borodin
@Borodinわかりません - ymdは文脈に敏感ではありませんか?これをサブで包むことを意味しますか?私はあなたが "スカラーコンテクストで値のリストを返す_"ことを意味しているとは思っていません。特定のプロジェクトでは、常に「アイデア」を探して、「DateTime」のユーティリティー・サブッジを用意しています。 (質問はあまりにも基本的なものです - 質問者や訪問者がそれを知らない可能性が高いので、これを示したいと思います。 – zdim
私がはっきりしないと申し訳ありません。私はモジュールが書かれている方法を嘆いていた。これは、リストコンテキストで '(YYYY、MM、DD)'を返すようにすると、 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy OPの問題はすぐに起こる。それは理にかなっていますか? – Borodin