2016-05-02 15 views
2

私の仕事は、当月の最終日を計算することです。DateTimeで今月の最終日を取得するにはどうすればよいですか?

last_day_of_monthにはDateTimeがあります。

$av_tmp_TODAY = DateTime->last_day_of_month({year=>2016,month=>05}); 

しかし、私はちょうど今日の日付を取ると、その月の最後の日に取得したい、固定年と月を設定する必要はありません:あなたはこのようにそれを呼び出すことができます。

さらに、出力を%Y-%m-%dの形式で出力します。

答えて

8

コンストラクタnow()を使用し、次に出力メソッドymd('-')を目的のセパレータと共に使用します。指定されていない場合は、デフォルトで-です。

#!/usr/bin/env perl 

use strict; 
use warnings; 
use feature qw{say}; 
use DateTime; 

my $dt = DateTime->now(); 
say DateTime->last_day_of_month(year => $dt->year, month => $dt->month)->ymd('-'); 
1

perldocコマンドを確認してください。

perldoc DateTimeはあなたにもあり

$ymd = $dt->ymd;   # 2002-12-06 
$ymd = $dt->ymd('/');  # 2002/12/06 
を見つけるあなたは

$year = $dt->year; 
$month = $dt->month; 

で現在の年と月を抽出することができ、そこから、$dt = DateTime->now;はあなたの現在の日付と時刻を持つオブジェクトを取得することを教えなければなりません

0

日、月、年を取得するには、localtime

my($day, $month, $year)=(localtime)[3,4,5]; 
を使用してください。

はその後、月の最終日を取得するには、上から自分のコードを使用します。

$av_tmp_TODAY = DateTime->last_day_of_month({ 
    year => $year + 1900, 
    month => $month +1 
})->ymd('-'); 

注:あなたが正しい月と年を取得する$year$monthと1900に1を追加する必要があります。これは上の例に示されています。

このトピックに関するさらに読書については、以下を参照してください

http://www.perlmonks.org/?node_id=2158

http://perldoc.perl.org/functions/localtime.html

+1

は、残念ながら、これは質問に答えていません。 – simbabque

+0

申し訳ありませんが、last_day_of_monthメソッドに値を代入するためのコード行を追加しました。 – MattCorr

1
$ perl -MDateTime -wE 'say DateTime->today 
            ->set_day(1) 
            ->add(months => 1) 
            ->subtract(days => 1) 
            ->ymd' 

出力:

2016-05-31 
関連する問題