CGI-BBS > CGI > Perl > perにて月日の扱いについて


カレッヂ
カレッヂ


質問者 さち  投稿日 3/10(土) 12:00:45
月日の扱い方について、どなたか教えて下さい
たとえば、
2001/03/10/00:00
をtime関数用の時間にする事は可能でしょうか?
すみませんが、どなたかお願いします。
回答者 さくら  [削除]  投稿日 3/11(日) 04:32:38
>2001/03/10/00:00
>をtime関数用の時間にする事は可能でしょうか?

time 関数の戻り値(1970年1月1日からの秒数)に変換するという事ですか?
そうならば、Time::Local モジュールのtimelocalメソッドを使います。

timelocalメソッドの使い方
$retime = timelocal($sec, $min, $hour, $day, $month, $year);

これで$retime に1970年1月1日からの秒数が入ります。
注意する事は、$year が、2001の場合1900を引く事、$month は、1 引く事を忘れないで下さい。

簡単なサンプルコードを書きます。
>2001/03/10/00:00
こうなっていますが、ここでは、秒数も入っているものとして書きます。
2001/03/10/00:00:00

#!/usr/local/bin/perl
use Time::Local;

@date = split /\D/, '2001/03/10/00:00:00';
$date[0] -= 1900;
$date[1]--;
$retime = timelocal(reverse @date);

これで、OKです。Time::Local モジュールはperl5標準モジュールです。
効率も良いですよ。


質問者 さち  [削除]  投稿日 3/11(日) 07:21:18
ありがとう御座います
time::local関数なるほど、、(^.^)
とても、わかりやすい説明ありがとうございます
これで、すごくなやんだ月日が、解決しました

このページは終了したので返信(回答)は書きこめません

Web裏技