Dateクラス
Date::Simpleつかえ!!とか思うけど、
さっきJavascriptで作ったのをPerlでやってみよと思ってやってみた。
10分足していく処理を書いたとして、 フォーマット文字列の分の部分が60越えても時間になおるので
便利かなーかなーーと思ったけど、どうだろうか。
package Date; use strict; my $time = 0; my $init = sub{ my $self = shift; $self->set_time(shift); return $self; }; sub new{$init->(bless({},shift),@_)} sub set_time{$time = ($_[1] or time)} sub get_time{$time} sub format{ my ($sec,$min,$hours,$mday,$mon,$year) = gmtime($time + 9 * 3600); return sprintf(q{%04d/%02d/%02d %02d:%02d:%02d},$year+1900,$mon+1,$mday,$hours,$min,$sec); } sub at{ my $self = shift; my $_time = shift; my %p; if($_time =~ /^(?d{1,2}):?(?d{1,2})?:?(?d{1,2})?$/){ $p{hours} = ($1-0 or 0); $p{minutes} = ($2-0 or 0); $p{seconds} = ($3-0 or 0); } my ($sec,$min,$hours) = gmtime($time + 9 * 3600); my $diff = ($sec - $p{seconds}) + ($min - $p{minutes}) * 60 + ($hours - $p{hours}) * 3600; $time -= $diff; return $self; } 1; # ここからサンプル my $d = Date->new; print $d->format().qq{?n}; print Date->new->at('12')->format().qq{?n}; # 12 o'clock print Date->new->at('1:65:70')->format().qq{?n}; # 2:06:10