• 追加された行はこの色です。
  • 削除された行はこの色です。
* Time::Piece [#n54937d4]
* Time::Piece(低機能だが軽い)[#n54937d4]

** Time::PieceとTime::Seconds [#fb84926b]
:Time::Piece|日付・時刻(タイムスタンプ)を表す。
:Time::Seconds|時間(秒)を表す。

** Time::Pieceオブジェクトを作る [#l7ad822a]
*** ローカルタイム [#qbf2b389]
 my $now   = Time::Piece->localtime();  # 現在時刻
 my $epoch = Time::Piece->localtime(0); # 1970-01-01 09:00:00 タイムゾーンが日本の場合
*** 世界標準時 [#k54b6f5d]
 my $now   = Time::Piece->gmtime();  # タイムゾーンが日本の場合、localtime()より9時間前
 my $epoch = Time::Piece->gmtime(0); # 1970-01-01 00:00:00
*** 日時フォーマット指定 [#rd36d01d]
 my $tp = Time::Piece->strptime('1960-04-01 00:00:00', '%Y-%m-%d %H:%M:%S');
** Time::Pieceオブジェクトを作る [#t922524b]
 my $now = Time::Piece->localtime;
 my $tp  = Time::Piece->localtime->strptime( '2000-04-01 00:00:00', '%Y-%m-%d %H:%M:%S' );
 
 say $tp->ymd; # "2000-04-01"
 say $tp->hms; # "00:00:00"

*** 曜日を和名で [#ea85b1e2]
 $tp->day_list(qw/日 月 火 水 木 金 土/);
 say $tp->wdayname; # "土"

*** localtime() と gmtime() [#kfbe9280]
localtime()はタイムゾーンを考慮したTime::Pieceオブジェクトを返す(日本の場合は+9時間)。Time::Pieceで時間だけを扱いたい場合、時間の計算をしたい場合などはgmtime()の方が都合がよい。当日25時0分0秒を翌日1時0分0秒と表したい場合だとか。
 my $gt = Time::Piece->gmtime( 25 * 60 * 60 );
 say $gt->ymd; # 1970-01-02
 say $gt->hms; # 01:00:00
 
 my $lt = Time::Piece->localtime( 25 * 60 * 60 );
 say $lt->ymd; # 1970-01-02
 say $lt->hms; # 10:00:00

** Time::Seconds [#ufd881e7]
*** Time::PieceオブジェクトをTime::Secondsオブジェクトへ変換する [#p48e99c6]
 my $ts = Time::Seconds->new($tp->epoch);
*** 翌日を求める [#xcdb354c]
 my $tp = Time::Piece->localtime->strptime( '2000-04-01 00:00:00', '%Y-%m-%d %H:%M:%S' );
 $tp += ONE_DAY;
 say $tp->ymd; # 2000-04-02
 say $tp->hms; # 00:00:00

*** Time::SecondsオブジェクトをTime::Pieceオブジェクトへ変換する [#fbf7db03]
 my $tp2 = Time::Piece->gmtime($ts->seconds);
*** 翌月は求まらない [#qc41f61e]
 my $tp = Time::Piece->localtime->strptime( '2000-01-01 00:00:00', '%Y-%m-%d %H:%M:%S' );
 $tp += ONE_MONTH;
 say $tp->ymd; # 2000-01-31
 say $tp->hms; # 10:29:04
ONE_MONTHが固定値(2629744)を使ってるから。翌月を求めたいなら、DateTimeなどの他のモジュールを使う。ONE_MONTH他については[[Time::Seconds>http://search.cpan.org/perldoc?Time::Seconds]]を参照。

** 参考 [#bfdc9f53]
- http://search.cpan.org/perldoc?Time::Piece
- http://search.cpan.org/perldoc?Time::Seconds


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS