perlで、1970/1/1に満たないシリアル値から年月日を求める事は可能でしょうか?可能であればその方法を知りたいのですが。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2003/03/15 01:03:15
  • 終了:--

回答(1件)

id:watal No.1

watal回答回数130ベストアンサー獲得回数02003/03/15 02:58:01

ポイント40pt

http://cocohome.hp.infoseek.co.jp/cocohome/l_nisukeisan.html

ココとPerlで遊びませんか(経過日数の計算)

上のリンクはあまり参考になりません。

ちょっと書いてみました。もっとスマートな方法があると思いますが…。

1行目の$timeserialに負の数(つまり1970/1/1 0:00:00から引く秒数分のシリアル値)を入れると、経過日数とその日付が出力されます。

実行にはDate::Calcモジュールが必要です。

また、あくまでグレゴリオ暦での計算なのでご注意を。

------------------

$timeserial = -86400;

($sec, $min, $hour, $mday, $mon, $year) = gmtime(0);

$year += 1900;

$mon += 1;

$kdays = int($timeserial / 60 / 60 / 24);

print ”$kdays日が経過しています¥n”;

use Date::Calc qw(Add_Delta_Days);

($y,$m,$d) = Add_Delta_Days($year,$mon,$mday,$kdays);

print ”$y/$m/$d¥n”;

-------------------------

id:kuwa

回答ありがとうございます。

ただ、Date::Calcは標準モジュールではないので、標準モジュールだけで同じことをしたいと思っています。

2003/03/15 13:06:23

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません