Time::Pieceが凄い便利

ずっと、日付関連は扱ってこなかったので、
Time::Pieceが気になったままになってたけど、
来週のHokkaido.pm Casual(ATND)に向けて使う必要が出てきたので、
少しだけ調べてみました。

なんで使う必要が出てきたかというと、
任意の日付の曜日が知りたかったからなのですが、
その他にも、任意の月が何日あるのかも調べられるようです。

use v5.14;
use strict;
use warnings;

use Time::Piece;

foreach ( 1..12 ) {
    my $str = sprintf( '%d-%d-%d', 2014, $_, 1 );
    my $t = Time::Piece->strptime( $str, '%Y-%m-%d' );

    say $t->ymd(), ' : month_last_day = ', $t->month_last_day();
}

これを実行すると、こんな感じ。
$ perl aaa.pl
2014-01-01 : month_last_day = 31
2014-02-01 : month_last_day = 28
2014-03-01 : month_last_day = 31
2014-04-01 : month_last_day = 30
2014-05-01 : month_last_day = 31
2014-06-01 : month_last_day = 30
2014-07-01 : month_last_day = 31
2014-08-01 : month_last_day = 31
2014-09-01 : month_last_day = 30
2014-10-01 : month_last_day = 31
2014-11-01 : month_last_day = 30
2014-12-01 : month_last_day = 31

もう、「西向く士(さむらい)」とか思い出して、
2,4,6,9,11は31未満とか、閏年か判定したりとか、
そういうの書く必要ないですね!

ただ、strptimeの使い方が難しくって、
このページを参考にさせて貰いました。

STRPTIME
http://linuxjm.sourceforge.jp/html/LDP_man-pages/man3/strptime.3.html

Time::Pieceそのものに関しては、こちらをどうぞ。
http://perldoc.jp/docs/modules/Time-Piece-1.20/Time/Piece.pod

おしまい。

Leave a Comment