とっても新鮮でした。これからもちょくちょくやっていこう。
今回行なったのは、簡易CMS(コンテンツマネージメントシステム)の改造。
新し目の記事に「NEW」っていうアイコンをつけたいとの事。
CGI&Perlポケットリファレンス (Pocket reference)
著者:藤田 郁
販売元:技術評論社
発売日:1999-03
おすすめ度:
レビューを見る
パッと思いついたのが、記事データの日時と現在の日時を比較して、最近のものだけに「NEW」をつける手法。
そこで「$date-10」なんてやって10日前まで表示させようと思いきや、これはどう考えても動きません。
「$date」に格納されているデータが「2009/9/28」といった文字列だからです。
そこでこいつを数字に変えなきゃいけない。
いろいろ調べてみると「エポックタイム」という便利なものがあることが判明。
エポックタイムってのは何のことなのでしょう。
エポックタイム(エポック秒)
これはですね。簡単に言うと日時を秒数で表した数字です。1970年1月1日00:00:00を基準にして、それから何秒たったかを数値にしています。
perlの場合、Time::Localモジュールのtimelocal関数を使うと簡単にエポックタイムを取得することができます。
「$date="2009/9/28"」と仮定して具体的には以下のように書きました。
($year,$mon,$mday) = split(/\//,$date,); $date2 = timelocal(0, 0, 0, $mday, $mon-1, $year);最初の行でスラッシュでデータを分解、次の行でエポックタイムにして「$date2」に格納しています。
(出た数字はなんと「1254063600秒」=「12億5406万3600秒」)
こいつを、「time」と比較すればいいわけです。
ちなみに1ヶ月をエポックタイムにすると60秒×60分×24時間×30日=2592000秒となります。
もちろん、プログラム前半に
use Time::Local;の表記も忘れずに。
■ココとPerlで遊びませんか(経過日数の計算) (参考にしたサイト)