Perlでの時間処理

[上に] [前に] [次に]
saka 2000/01/28(金) 13:50:41
Perlで時間処理に困っています。
1999/10/1 等の文字列が有ります。
この日付が現在の日にちの何日前が調べたいのです。

javaだとDateオブジェクトで時差を求められますが
perlだとどうすれば良いのでしょか?

文字列の元に成っているファイルは手で書き換えるので
time();で秒数を保存する方法は、殆ど無理です。
年/月/日をそれぞれ比較していく方法になるのでしょうか?

牛若丸 2000/01/28(金) 14:39:39
perlはあまり詳しくないのですが・・・私が使ってる方法は以下の通りです。

・現在の日付(2000/01/29)などは local(time)から生成してます。
・localtime(time-n*24*6*60)wp元ネタにすればn日前の日付を同じ
 フォーマットで取得できます。
・あとはnをループで増やしていけば、日付文字列が一致したときの
 nが日差です。

牛若丸 2000/01/28(金) 14:40:21
localtime(time-n*24*60*60)を元ネタ・・・の間違い

牛若丸 2000/01/28(金) 14:41:07
また間違えた

local(time-n*24*60*60)を元ネタ・・・です。

ラウォッチ 2000/01/28(金) 15:00:07
以下でもいけるかも。参考書を参考に。

use Time::Local;

$whatday = (time - &timelocal(0, 0, 0, 1999, 10, 1)) / (24 * 60 * 60);

尚、timelocalは指定した日時の情報をtime関数形式で返します。

saka 2000/01/28(金) 16:36:56
牛若丸さんへ
日付処理をループで行うと処理が重くなってちと大変です。
(カレンダー作った時に体験済です。)
処理数が数百単位有るので比較を少なくしたいです。

ラウォッチさんへ
timelocal とは、日時から秒数に変換するサブルーチンですか?
手元には入門書程度の参考書ないから載って無いです。
ネット上で調べてみます。

saka 2000/01/28(金) 19:09:22
[[解決]]
Perl5だと
use Time::Local;
timelocal();が使えるのですね。

Perl4だと
timelocal.pl
&timelocal();
を使えばできそうですね。

一応解決にします。ありがとうございました。

[上に] [前に] [次に]