指定年月の第X週目のY曜日が何日か、また、指定年月日が第X週目のY曜日かを取得するPHPスクリプトをまとめした。
以下のページを参考にしました。
⇒曜日を表示する:PHP
指定年月のX番目のY曜日が何日かを取得する
function get_numberx_weekday($y, $m, $n, $w) { date_default_timezone_set('Asia/Tokyo'); // 指定曜日の最初の日付を取得して指定週の日付を算出 $first_weekday = date("w", mktime(0, 0, 0, $m, 1, $y)); $result_day = $w - $first_weekday + 1; if ($result_day < 1) { $result_day += 7; } $result_day = $result_day + ($n - 1) * 7; if ($result_day > 31) { return 0; } return $result_day; }
引数は
- $y:年
- $m:月
- $n:何週目か
- $n:曜日(日:0 月:1 火:2 水:3 木:4 金:5 土:6)
となっています。
WordPressのショートコードとして使用する場合
WordPressのショートコードとして使用する場合は、以下ようにします。
function get_numberx_weekday() { extract(shortcode_atts(array( 'y' => 2017, 'm' => 2, 'n' => 3, 'w' => 6, ), $atts)); date_default_timezone_set('Asia/Tokyo'); // 指定曜日の最初の日付を取得して指定週の日付を算出 $first_weekday = date("w", mktime(0, 0, 0, $m, 1, $y)); $result_day = $w - $first_weekday + 1; if ($result_day < 1) { $result_day += 7; } $result_day = $result_day + ($n - 1) * 7; if ($result_day > 31) { return 0; } return $result_day; } add_shortcode('get_numberx_weekday', 'get_numberx_weekday');
以下のようなコードを記事に書き込んで使用します。
[get_numberx_weekday y=2017, m=2, n=3, w=6]
指定年月日が何番目の何曜日かを取得する
function get_numberx_and_weekday($y, $m, $d) { $weekjp = array('日', '月', '火', '水', '木', '金', '土'); date_default_timezone_set('Asia/Tokyo'); $date = new DateTime(); $date->setDate($y,$m,$d)->setTime(10,10,10); $w = date("w", mktime(0, 0, 0, $m, $d, $y)); // 指定曜日の最初の日付を取得して指定週の日付を算出 $n = ceil($d/7); return "第" . $n . $weekjp[$w] . "曜日"; }
引数は
- $y:年
- $m:月
- $d:日
となっています。
戻り値を複数の値で返す場合は、以下のようにします。
return array($y, $m, $d);
実行する側のコード
list($num, $week) = get_numberx_and_weekday(2017, 2, 17);
WordPressのショートコードとして使用する場合
WordPressのショートコードとして使用する場合は、以下ようにします。
function get_numberx_and_weekday() { extract(shortcode_atts(array( 'y' => 2017, 'm' => 2, 'd' => 3, ), $atts)); $weekjp = array('日', '月', '火', '水', '木', '金', '土'); date_default_timezone_set('Asia/Tokyo'); $date = new DateTime(); $date->setDate($y,$m,$d)->setTime(10,10,10); $w = date("w", mktime(0, 0, 0, $m, $d, $y)); // 指定曜日の最初の日付を取得して指定週の日付を算出 $n = ceil($d/7); return "第" . $n . $weekjp[$w] . "曜日"; } add_shortcode('get_numberx_and_weekday', 'get_numberx_and_weekday');
以下のようなコードを記事に書き込んで使用します。
[get_numberx_and_weekday y=2017, m=2, d=4]