• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:日付で判定する処理)

日付で判定する処理の実装方法について

このQ&Aのポイント
  • 日付で判定する処理を実装する方法について教えてください。
  • 掲示板のような処理で入力された日付と文章のデータをテキストファイルに保存し、それをHTMLで表示しています。
  • 入力された日付が1週間前の場合に文章を赤文字で表示する方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • hikomin
  • ベストアンサー率63% (40/63)
回答No.1

2005/02/14から/を抜くのは、例えば正規表現なら、 my $date = '2005/02/14'; こんな風に変数に入っているとすれば、 $date =~ s{/}{}g; とかで引けます。 また、今日の日付は、例えば my ($y,$m,$d) = (localtime time)[5,4,3] my $today = sprintf "%04d%02%%02d", $y+1900, $m+1, $d; とすれば、yyyymmddの形式になります。(一行目でローカル時間の配列から年・月・日のデータだけ取り出して、2行目で整形) ただ、問題は月の変わり目なんかがあるので単純に7を引く程度では駄目な時があると言うことです。データにはエポック秒のまま記録しておき、表示の際に変換するとかが一般的と思いますが、整形された形からエポック秒を取り出す事も出来ます。これにはTime::Localモジュールを用い、 use Time::Local; my $date = '2005/02/14'; my ($y, $m, $d) = split m{/}, $date; my $epoc = timelocal(0, 0, 0, $d, $m-1, $y); # timelocalの引数は左からsec, min, hour, day, month, year とすればエポック秒を得られますので、7日であればこの数値から7*24*60*60を差し引きして比べると楽でしょう。

eijikun
質問者

お礼

ありがとうございました. 大変参考になりました.

関連するQ&A