WordPress: 時間に関する定数

日数を秒数などに換算した値を使いたいとき、日数 × 24 × 60 × 60 で計算できます。
少し面倒ですね。

WordPressはこのような計算に便利な定数が用意されているので、そちらを使いましょう。

時間計算に便利な定数

次の6つの定数が定義されています。

定数 意味
MINUTE_IN_SECONDS 一分の秒数 60
HOUR_IN_SECONDS 一時間の秒数 60×60 = 3,600
DAY_IN_SECONDS 一日の秒数 24×60×60 = 86,400
WEEK_IN_SECONDS 一週間の秒数 7×24×60×60 = 604,800
MONTH_IN_SECONDS 一か月の秒数 30×7×24×60×60 = 18,144,000
YEAR_IN_SECONDS 一年の秒数 365×30×7×24×60×60 = 6,622,560,000

実際の定義は /wp-includes/default-constants.php に次のように記述されています。

  • define( 'MINUTE_IN_SECONDS', 60 );
  • define( 'HOUR_IN_SECONDS', 60 * MINUTE_IN_SECONDS );
  • define( 'DAY_IN_SECONDS', 24 * HOUR_IN_SECONDS );
  • define( 'WEEK_IN_SECONDS', 7 * DAY_IN_SECONDS );
  • define( 'MONTH_IN_SECONDS', 30 * DAY_IN_SECONDS );
  • define( 'YEAR_IN_SECONDS', 365 * DAY_IN_SECONDS );
AFFS Simple Code Viewer
Copy

特定月の秒数と日数を得る

一か月の秒数 MONTH_IN_SECONDS を見ると、30日で計算しています。
実際には31日の月がありますね。

参考までに、特定月の秒数と日数を得る方法も記載しておきます。

  • function echo_month_seconds($year,$month){
  • if( !is_numeric($year) || !is_numeric($month) ) {
  • echo 'パラメーターが正しくない';return;
  • }
  • $starttime = strtotime( "{$year}-{$month}-01 0:0:0");
  • if( $month === 12 || $month === '12') { $year ++; $month = 1; }
  • else { $month ++;}
  • $endttime = strtotime( "{$year}-{$month}-01 0:0:0");
  • $month_seconds = $endttime - $starttime;
  • echo "秒数:{$month_seconds}<br>";
  • echo '日数:' . ($month_seconds/DAY_IN_SECONDS) . '<br>';
  • }
AFFS Simple Code Viewer
Copy

strtotime()関数は、指定された日時をUnix タイムスタンプに変換します。
これは秒なので、月の終わり(次月の始まり)から、月の始めの秒数を引くだけで求める結果を得ることができます。

特定の年の秒数についても、同じような方法で求めることができますね。