Perlコーディング

x日後の日付を求める

2007年11月25日
指定した日付からx日後の日付を求めてみます。
Perlでは、1970/01/01 000:00:00からの秒数で日付を計算します。

まずは、現在日を求めてみます。昨日はstrftimeを使って求めましたが、今日は1970/01/01 000:00:00からの秒数から計算する方法を用います。
($sec, $min, $hour, $day, $month, $year, $wday, $yday, $isdst) = localtime(time);
とすると現在日時が得られます。
表示してみると(実行日2007/11/25)、
$day = 25
$month = 10
$year = 107
が返ってきています。つまり、月には1を足し、年には1900を足すと現在日になります。


次に、現在日時を1970/01/01 000:00:00からの秒数に直してみます。timelocal関数を使います。
localtime(time)で求めた現在日をtimelocal関数で秒数に直してみます。

($sec, $min, $hour, $day, $month, $year, $wday, $yday, $isdst) = localtime(time);
$times = timelocal($sec, $min, $hour, $day, $month, $year);
timeと$timesの値を表示してみると、同じであることがあります。これは当たり前ですね。

では、$yearに1900を足して秒数を求めてみます。
($sec, $min, $hour, $day, $month, $year, $wday, $yday, $isdst) = localtime(time);
$times = timelocal($sec, $min, $hour, $day, $month, $year+1900);
timeと$timesの値は同じです。

つまり、$monthは5月なら4を、11月なら10をという具合に、1を引いた値を引き渡します。年は1900を足しても足さなくてもよいようです。


それでは、指定した日のx日後(前)の日付を取得してみます。


指定した日のx日後(前)の日付を取得する関数を作成しました。
Perlでは、1970/01/01 000:00:00からの秒数で日付を計算します。timelocal関数を使うと計算できます。
2007/11/20の5日後の場合、
$year = 2007;
$month = 11;
$day = 20;
$times = timelocal(0, 0, 0, $day, $month-1, $year);
で 1970/01/01 00:00:00 から 2007/11/20 00:00:00 までの秒数が求められます。

5日後なので、5日間の秒数は
$x = 5;
$num = 60 * 60 * 24 * $x;
で求められます。
$times + $num の秒数を、日付に直せばOKです。

( undef, undef, undef, $day, $month, $year ) = localtime($times + $num);
$year += 1900;
$month += 1;

で2007/11/20の5日後の日付がわかります。

x日前の場合、$xに負の値を渡せばOKです。


sprintf関数を使って、日付の書式をかえてやります。
yyyymmdd書式にするためには
$yyyymmddJ = sprintf("%04d%02d%02d", $year, $month, $day);



自由に使えるモジュールも公開されています。
Date::Simpleモジュール
コメントの書き込み
コメント
2018年04月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
先月
来月
カテゴリ
検索
関連サイト
プロフィール
【ネットネーム】
みゅー

キャラクター by ツカエルサイト


【趣味】
・プログラミング
・写真
・楽器演奏
・手芸
・日曜大工
・家の中の不便を便利に
・考える
・自然科学
・猫と戯れる
・ジグソーパズル

【仕事】
・派遣社員でSE・PGやっていました。次の良い仕事がみつからないので、ビジネスへ注力しようと思っています。
・経験言語:VB6、VB.NET、PHP、Perl、JAVA、Oracle、SQLServer、PostgreSQL



【名前】
アン(足)

2014年4月22日生まれ 女の子
あだ名は くノ一
普段は普通にしゃべりますが、興奮すると『ニャ』を連発します

【趣味】
・狩
・ご飯を食べる
・ママのお手伝い

【仕事】
ママのビジネスの看板招き猫
ママの代わりにPC入力
仕事中のママの右腕を温める
ママに心配をかける
いろんな事をしでかしてママを退屈させない

RSSフィード
コメント
ミミ、どうしているかな?
2018-04-17 08:51:41
ミミ、どうしているかな?
たかこ さん
2018-04-16 19:42:12