« レシピ1.4.日付の反復 | メイン | カレントディレクトリとそのサブディレクトリから特定の文字を含むテキストファイルを検索するRubyスクリプト »

レシピ1.5.日付の演算

RubyクックブックをPHPに翻訳してみる。

レシピ1.5.日付の演算

タイムスタンプに秒数を加減して計算する

<?php
//タイムスタンプに秒数を加減して計算する
//2008年9月1日の10日後を求める
$date = mktime(0, 0, 0, 9, 1, 2008); //2008年9月1日
$inc_day = 10; //10日後
$one_day = 60 * 60 * 24; //1日の秒数
print_r(date('Y年m月d日', $date + $inc_day * $one_day));
// => 2008年9月11日
?>

mktime()の引数を加減して求める。

<?php
//[mktime()][3]の引数を加減して求める。
//2008年9月1日の10日後を求める
$inc_day = 10; //10日後
$date = mktime(0, 0, 0, 9, 1 + $inc_day, 2008); //2008年9月1日
print_r(date('Y年m月d日', $date));
// => 2008年9月11日

//2008年9月1日の10日前を求める
$inc_day = -10; //10日前。負の数を指定する
$date = mktime(0, 0, 0, 9, 1 + $inc_day, 2008); //2008年9月1日
print_r(date('Y年m月d日', $date));
// => 2008年8月22日
?>

月末の日付を求める。
mktime()の日に「0」を指定すると、前月の月末の日付を取得できます。

<?php
$date = mktime(0, 0, 0, 9, 0, 2008); //2008年9月0日
print_r(date('Y年m月d日', $date));
// => 2008年8月31日
?>

2つの日付の間隔を求めるには、タイムスタンプの差から日数を計算します。

<?php
$from = mktime(0, 0, 0, 9, 1, 2008); //2008年9月1日
$to = mktime(0, 0, 0, 9, 11, 2008); //2008年9月1日
$one_day = 60 * 60 * 24; //1日の秒数
$period = ($to - $from) / $one_day;
print_r($period);
// => 10
?>

トラックバック

このエントリーのトラックバックURL:
http://www.gesource.jp/mt/mt-tb.cgi/515

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2007年08月22日 09:27に投稿されたエントリーのページです。

ひとつ前の投稿は「レシピ1.4.日付の反復」です。

次の投稿は「カレントディレクトリとそのサブディレクトリから特定の文字を含むテキストファイルを検索するRubyスクリプト」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.35