人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPで土日祝日を除いて、今日から中4営業日の自動表示をしたいと考えています。
まだ途中ですがいろいろ調べていいところまでいったのですが・・・曜日を日本語で表示させることができません。

どなたかお知恵を拝借いただけませんでしょうか。
以下、コードです。
祝日はしょっちゅう変わるので年に1度手打ちで入れていくつもりです。
Googleカレンダーから取得する方法も見つけましたが、訳あって外部データは引っ張れません。

<?php
function getNextBusinessDay($date_start, $count)
{
$holiday = array( "2011-07-18" => "海の日");

$date = clone $date_start;
$oneday = new DateInterval("P1D");
while ($count > 0) {
$date->add($oneday);
$str = $date->format("Y-m-d");
$w = $date->format("w");
if ($w < 1 #日曜
|| $w > 5 #土曜
|| isset($holiday[$str])) { #祝日
continue;
}
$count--;
}
return $date;
}
$today = date("Y/m/d");
$date = new DateTime($today);
$step = 5;
$next = getNextBusinessDay($date, $step);


print "".$next->format("Y-m-d(l)")."";
?>

●質問者: 匿名質問者
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● 匿名回答1号

何がわからないのか、判らない。
こういう方法で表示できない理由でもあるの?
http://memememomo.hatenablog.com/entry/2011/12/06/200644


2 ● 匿名回答2号

土日を除く中4日って、間に祝日が無ければ必ず7日後(=1週間後)ですよね?
なのでインターバルの計算は不要じゃないかなぁ...

注目している7日間に祝日があれば、その日数分更に付加すればよいと思います。
西暦の日付を YYYYMMDD の書式で表示した値であれば単純に比較できるでしょうから「間にある」のチェックも容易ですよね?

曜日を示す値(日曜が0、土曜が6)から4を引いた値よりも間にある祝日の数が少なければ再度土日を超える事はないのでそのまま(7+祝日の数)、そうでなければ更に2日(土日の分)を付加すればトータル何日後が判明する。
(期間が長くなった分祝日が増えないかの再チェックが必要でしょう)


日本語の曜日は、曜日を示す値(上記)をキーにした配列を作っておけばお手軽です。
$jday = array('日','月',...,'土');
$wday = date('w', time());
print '今日は'.$jday[$wday].'曜日';

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ