レシピ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
?>

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください