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();
を使えばできそうですね。
一応解決にします。ありがとうございました。
[上に]
[前に]
[次に]