如何使用DateTime获取当月的最后一天?

时间:2016-05-02 14:26:25

标签: perl datetime

我的任务是计算当月的最后一天。

DateTime中有一种方法last_day_of_month。你可以这样称呼它:

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

但是我不想设定固定的年份和月份,我只想采取今天的日期并获得该月的最后一天。

此外,我希望我的输出格式为%Y-%m-%d

4 个答案:

答案 0 :(得分: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 :(得分:2)

return Json(new HttpUnauthorizedResult().StatusDescription);

输出:

StatusDescription

答案 2 :(得分:1)

了解perldoc命令。

perldoc DateTime应告诉您$dt = DateTime->now;会为您提供一个包含当前日期和时间的对象,您可以通过该对象提取当前年份和月份

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

你也会找到那里

$ymd    = $dt->ymd;           # 2002-12-06
$ymd    = $dt->ymd('/');      # 2002/12/06

答案 3 :(得分: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('-');

注意:您必须将1添加到$month,将1900添加到$year才能获得正确的月份和年份。这在上面的例子中显示。

有关此主题的进一步阅读,请参阅:

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

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