月の初日から月末までを処理する


野暮用で月ごと1日〜月末までそれぞれの日を処理するようなプログラムを書こうとしているのですが、月の日数が何日まであるのかを調べるのは地味に面倒ですね。
基本的に月の日数は固定なのでテーブルを作ってもいいんですが、2月は閏年があるし・・・

というわけで、cpanからClass:Dateを使わせてもらいました。

#!/usr/bin/perl
use strict;
use warnings;

my $date = new Class::Date;
$date = date now;

$Class::Date::DATE_FORMAT="%Y/%m/%d";

my $cur=$date->month_begin;
my $end = $date->days_in_month;
for (my $i=0; $i<$end; $cur+='1D', $i++) {
    print "$cur\n";
}

出力結果

2012/03/01
2012/03/02
2012/03/03
2012/03/04
2012/03/05
2012/03/06
2012/03/07
2012/03/08
2012/03/09
2012/03/10
2012/03/11
2012/03/12
2012/03/13
2012/03/14
2012/03/15
2012/03/16
2012/03/17
2012/03/18
2012/03/19
2012/03/20
2012/03/21
2012/03/22
2012/03/23
2012/03/24
2012/03/25
2012/03/26
2012/03/27
2012/03/28
2012/03/29
2012/03/30
2012/03/31

こりゃ便利。

Leave a Comment