- ベストアンサー
土日をカウントしない日付表示
PHPで日付の表示方法で困っています。 今日から3日後の日付を表示するときに土日を含まないで表示させたいのです。本日12日ですので17日が表示されるようなPHPをご教授いただきたいです。 <?php echo date("m月d日",strtotime("+3 day"));?> だと単純に3日後ですし、 <?PHP $day = 60 * 60 * 24; $t=mktime(0,0,0,date("m"),date("d")+3,date("y")); if(date("w",$t)==6) $t += $day * 2; if(date("w",$t)==0) $t += $day ; echo date("m月d日",$t); ?> だとしても土日をカウントしているので、思うような結果に至っておりません。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
<?php $day = 60 * 60 * 24; $after_day = 3; // 3日後 $after_day++; // 今日も含めるので+1 for ( $i=0; $after_day != 0; $i++ ) { $t = mktime(0,0,0,date("m"),date("d")+$i,date("y")); $w = date( "w", $t ); if( $w == 6 || $w == 0 ) { continue; } $after_day--; } echo date( "m月d日", $t ); ?> ↑のような感じでどうでしょう? 土曜に実行すると、18日と表示されるはずです。 これに最適化処理を加えるのであれば、3日後に土日を挟む可能性が必ず無い、月曜日などを加え、そこは単純加算するとかすると良いかも知れません。
その他の回答 (1)
少々汚いプログラムですが アマチュアなのでご容赦を.. <? //曜日を取得 $res = date("w", $sday); //日曜・月曜・火曜の場合 if($res <= 2){ echo date("m月d日",strtotime("+3 day")); } //水曜・木曜・金曜の場合 else if($res <= 5){ echo date("m月d日",strtotime("+5 day")); } //土曜の場合 else{ echo date("m月d日",strtotime("+4 day")); } ?>
お礼
ありがとうございます。これも確かに同じ様な結果にはなりますね。 多少冗長な気がしますが、わかりやすいですね。なるほど
お礼
早速ありがとうございます。 思った通りのものができました。う~ん、いろいろと勉強になります。