• 締切済み

Perl 日付処理 逆

Perl 日付処理仕組み $Tm = "1488992820"; my ($Nsec, $Nmin, $Nhour, $Ndate, $Nmon, $Nyear, $Nday) = localtime($Tm); $Nyear += 1900; $Nmon += 1; print "$Nyear/$Nmon/$Ndate"; これで結果は 2017/3/9 となりますが、 逆に 2017 3 上記の年月で 逆に戻したいのですが、 どのようにするのでしょうか? 1488992820のよう細かい日付でなくていいのですが 2017年3月内のlocationTimeに戻したいのです。 説明が下手くそなので、 実際やりたいこと・・・ ログファイル1列目に 1488992820 のように、ログ時間があり、 それをまず 月間別に分け 上記ですと 2017年3月というアンカーを作り <a href="test.cgi?Y=2017&M=3">2017年3月</a> このような感じがページに並び、 これを選択すると ページでそれに該当する行だけ配列に入れ 表示させるということです。 ブログ記事にあるアーカイブ、月間別 を作りたいです ※ログファイルに、予め 2017,3 といったように、書き込むのはなしです。 これは最終手段・・・ 無理やりではありますが value="2017,3," my $a = 0; my @DATA = grep { $DATA[$_] =~ /,2017,3,/ } 0..$#DATA; $a = scalar @DATA ; 一応実行はできております。

みんなの回答

回答No.1

POSIXモジュールのmktime関数を使います。 perl -e 'use POSIX qw(mktime); $time_t = mktime( 0, 7, 2, 9, 3 - 1, 2017 - 1900 );print "$time_t\n"' 1488992820 perl -e 'use POSIX qw(mktime); $time_t = mktime( 0, 0, 0, 9, 3 - 1, 2017 - 1900 );print "$time_t\n"' 1488985200

関連するQ&A