• 締切済み

date関数で、曜日を日本語表示でループさせる。

いつもお世話になります。 さて、date関数で、曜日を日本語表示でループさせ、日曜日だけ外す方法で悩んでおります。 今日から、順番に日付を表示させるのは、下記でできたのですが、 <?PHP $nday = mktime(); for($i=0;$i<5;$i++){ print "<option>".date("m月d日 (D)", mktime(0,0,0,date("m"),date("d")+$i,date("y")))."<br />"; } ?> 例) 04月18日 (Wed) 04月19日 (Thu) 04月20日 (Fri) 04月21日 (Sat) 04月22日 (Sun) 日本語表示にさせようとすると、曜日がループしません。 <?PHP $nday = mktime(); $youbi = array("日","月","火","水","木","金","土"); for($i=0;$i<5;$i++){ print "<option>".date("m月d日 (".$youbi[date(w)].")", mktime(0,0,0,date("m"),date("d")+$i,date("y")))."<br />"; } ?> 例) 04月18日 (水) 04月19日 (水) 04月20日 (水) 04月21日 (水) 04月22日 (水) また、ここから日曜日だけ外すことはできますか? お手数ですが、ご教示ください。 よろしくお願いいたします。

  • PHP
  • 回答数3
  • ありがとう数1

みんなの回答

回答No.3

//ループの中でいちいちdate("Y")というような意味のない繰り返しがあるので、これらは先に変数に格納します。 $Y = date("Y"); $m = date("m"); $d = date("d"); //曜日を先に配列にいれておくのは正解です。 $youbi = array("日","月","火","水","木","金","土"); //最終的にoptionに入れるようですが、基本的には<option>値</option>というかたちでタグを閉じるのが良いです。 //どちらかといえば、<option value="値">表示</option>という形が良いと思います。 for($i=0;$i<30;$i++){  $time = mktime(0,0,0,$m,$d+$i,$Y);  $w = date("w",$time);//曜日取得  if($w > 0){ //日曜日は0   $datestr = date("Y年m月d日",$time)."(".$youbi[$w].")";   print("<option>{$datestr}</option>");  } } こんな感じでしょうか 上記スクリプトは > $youbi[date(w)] ここでdate関数内のwが文字列になっていない事が問題じゃないでしょうか。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

まぁ、$youbi[date(w)]としてますので、date(w)では今日の曜日しか ひろえないですね。こんな感じでしょうか。 <?PHP $youbi = array("日","月","火","水","木","金","土"); for($i=0;$i<5;$i++){ $d=mktime(0,0,0,date("m"),date("d")+$i,date("y")); print date("m月d日",$d)." (".$youbi[date("w",$d)].")<br />"; } ?> ちなみにoptionとbrの組み合わせは変だったのでとりあえずbr にしときました >日曜日だけ外すことはできますか? ちょっと状況がわかりかねますが、曜日が0を除外すればよいのでは? if(date("w",$d)!=0) print date("m月d日",$d)." (".$youbi[date("w",$d)].")<br />";

  • asuncion
  • ベストアンサー率33% (2126/6288)
回答No.1

ちょっとしたサンプルです。 <?php $nday = mktime(); $youbi = array("日", "月", "火", "水", "木", "金", "土"); for ($i = 0; $i < 15; $i++) {   $w = (date("w") + $i) % 7;   if ($w != 0) {     print date("m月d日 (" . $youbi[$w] . ")",       mktime(0, 0, 0, date("m"), date("d")+$i, date("y"))) . "<br />";   } } ?> (注)インデントのため、全角空白を使っています。

関連するQ&A

  • 翌日の日付表示で土日を抜きたい

    質問させていただきます。 次回の会合部屋の予約可能日付を表示させるスクリプトを考えています。まず1日後の日付表示を考えているのですが、1日後が土曜日或いは日曜日の際には翌週の月曜日が表示されるようにしたいです。 現状は下記のとおり1日後の日付を表示する事しかできません。 <? $youbi = array("日","月","火","水","木","金","土"); $d=mktime(0,0,0,date("m"),date("d")+1,date("y")); print date("Y年m月d日",$d)." (".$youbi[date("w",$d)].")"; ?> 土曜日と日曜日は表示から省かれるようにする方法を教えてください。

    • ベストアンサー
    • PHP
  • 明日以降の平日表示

    ちょっと頭がこんがらがってわからなくなってしまいました。 明日以降の平日の日付を取得・表示するスクリプトを考えております。 ========= <? $youbi = array("日","月","火","水","木","金","土"); $d=mktime(0,0,0,date("m"),date("d")+1,date("y")); if(date("w",$d)==6) $d=$d+60*60*24*2; if(date("w",$d)==0) $d=$d+60*60*24*2; $theday = date("Y年m月d日",$d)." (".$youbi[date("w",$d)].")"; print $theday; ?> <? $youbi = array("日","月","火","水","木","金","土"); $d=mktime(0,0,0,date("m"),date("d")+2,date("y")); if(date("w",$d)==6) $d=$d+60*60*24*2; if(date("w",$d)==0) $d=$d+60*60*24*2; $theday = date("Y年m月d日",$d)." (".$youbi[date("w",$d)].")"; print $theday; ?> <? $youbi = array("日","月","火","水","木","金","土"); $d=mktime(0,0,0,date("m"),date("d")+3,date("y")); if(date("w",$d)==6) $d=$d+60*60*24*2; if(date("w",$d)==0) $d=$d+60*60*24*2; $theday = date("Y年m月d日",$d)." (".$youbi[date("w",$d)].")"; print $theday; ?> <? $youbi = array("日","月","火","水","木","金","土"); $d=mktime(0,0,0,date("m"),date("d")+4,date("y")); if(date("w",$d)==6) $d=$d+60*60*24*2; if(date("w",$d)==0) $d=$d+60*60*24*2; $theday = date("Y年m月d日",$d)." (".$youbi[date("w",$d)].")"; print $theday; ?> この方法だとなぜか、 ============ 2007年08月27日 (月) 2007年08月28日 (火) 2007年08月27日 (月) 2007年08月28日 (火) ============ となります。 どこがおかしいのでしょうか?

    • ベストアンサー
    • PHP
  • 曜日を日本語表示にする方法は?

    こんにちは、いつもお世話になっています。 以前どこかのサイトから、記憶(memo)とっていて、現在もそれを使っていたのですが、 何故か、本日(土)だけ、文字化けすることに気がつきました。 +-----------ここから----------------------- $youbi = array('日','月','火','水','木','金','土'); $gmt = time()+9*3600; $now = gmdate("Y/m/d(".$youbi[gmdate("w",$gmt)].") H:i:s", $gmt); +------------------------------ここまで--------- コードは、このように書いています。 それで、帰ってくる値は、「2004/05/15(?4) 03:46:44」となります。 文字化けさせないで、曜日を日本語にするには、どうしたら良いのでしょうか? 教えて下さい。よろしく、おねがいします。

    • ベストアンサー
    • PHP
  • php テーブルの項目のループを分ける方法

    phpで勤務管理のプログラムを書いています。 テーブルの項目を日付($date)、曜日($youbi)、区分($kubun)、開始($start)、終了($end)、休憩($rest)として 日付と曜日は下記のループ分で日付に曜日を紐付けてループさせて 出来ています。(16日~翌月15日)ただ、区分、開始、終了、休憩は入力画面から取ってくるようにしているのですが、同じデータが日付けのループ分表示されてしまします。 日付け・曜日のループとデータ部分(開始・終了・休憩)のループは 別にしたいのですが可能でしょうか? <?php $kubun=$_POST["kubun"]; $start=$_POST["start"]; $end=$_POST["end"]; $rest=$_POST["rest"]; if($end>22.00){ $sasa=$end-22; $sa=""; }elseif($end<=22.00){ $sa=$end-$start-$rest-8; $sasa=""; } $youbi = array("日","月","火","水","木","金","土"); $countdate=date('t',mktime(0,0,0,11,1,2021)); for($i=0;$i<$countdate;$i++){ $d=mktime(0,0,0,11,16+$i,2021); echo '<tr>'; print '<td align="right">'.date("d",$d).'</td>'; echo '<td align="right">'.$youbi[date("w",$d)].'</td>'; echo '<td align="right">'.$kubun.'</td>'; echo '<td align="center">'.$start.'</td>'; echo '<td align="center">'.$end.'</td>'; echo '<td align="center">'.$rest.'</td>'; ?>

    • ベストアンサー
    • PHP
  • Excelで曜日表示の改行

    1つのセルに日付と曜日を表示させたいのですが、 日付の下に曜日を表示させるには どうすれば良いですか? 例)  11月20日   (水) 今は、 ユーザー定義  ↓ [種類]欄に 「m"月"d"日("aaa")"」 と設定してるので、一列に 11月20日(水) と表示されていしまいます。 よろしくお願いします。

  • 縦カレンダーの曜日に色づけ

    <?php $lastd = date("d", mktime(0, 0, 0, $mm + 1, 0, $yyyy)); for ($i = 1; $i <= $lastd; $i++) ?> <tr> <?php  $ts = mktime(0, 0, 0, $mm, $i, $yyyy);  $ymd = date("Y/m/d", $ts);  $ymdstr = strftime("%Y年%m月%d日(%a)", $ts); ?> <td><?php echo $ymd ?></td> <?php //曜日表示  $_m =$m;  $dd = $i;  $aday = array("日", "月", "火", "水", "木", "金", "土"); while( $m==$_m ){ printf("<td><center>%s</center></td>", $aday[date("w", $ts)]); $d++; //次の日の月を$_mに代入 $_m = date("m",$ts); } ?> 日付の部分を"switch文"を使って書きたいのですが、わからずに苦労しています。教えてもらえると助かります。よろしくお願いします。

    • ベストアンサー
    • PHP
  • DATE関数の使い方で困っています

    DATE関数を使って曜日をセルに表示させました。 セルA1→年(和暦入力) セルB1→月 セルC1→日 セルD1→曜日を表示する DATE=(1988+A1,B1,C1) このとき、セルA1,B1,C1 が空欄のときもD1に曜日が表示されるのですが、表示させないようにする方法がわからず困っています。 あと、出来たらセルA1をdelキーで削除したときセルB1も空欄にすることが出来るでしょうか? 半日調べてみましたが、よくわかりませんでした.. ご存じの方教えて頂けないでしょうか? よろしくお願いします。

  • phpでの日付の取得について

    PHPでサイト内に、1週間分の日付を表示させ 日付ごとに指定したページに移動するよう、リンクを張りたいと思っております。 以下で日付は表示できたのですが 日付と日付の間にスペースを入れたいです。 ※可能であれば曜日も表示させたいです。 ↓現在、このように表示されます。 1/181/191/201/211/221/231/24 また、日付ごどに指定サイトへリンクも貼りたと思ってます。 <?php $nday = mktime(); for($i=0;$i<7;$i++){ print date("n/j",mktime(0,0,0,date("m",$nday),date("d",$nday)+$i,date("y",$nday)))."<td>"; } ?> どなたか、ご教授いただけないでしょうか? 以上、宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • Suzukaで時計のflashを作成し、曜日も表示されるようにしました

    Suzukaで時計のflashを作成し、曜日も表示されるようにしましたが、日曜日から土曜日まで全て同じ色(黒)で表示されます。 //曜日を取得 WD = fscommand2("GetDateWeekday"); //曜日の表示文字 if(WD == 0) {WD = "SUN";} else if (WD == 1) {WD = "MON";} else if (WD == 2) {WD = "TUE";} else if (WD == 3) {WD = "WED";} else if (WD == 4) {WD = "THU";} else if (WD == 5) {WD = "FRI";} else if (WD == 6) {WD = "SAT";} //(曜日)をyoubiに表示 youbi = WD ; そこで、日曜日(SUN)を赤、土曜日(SAT)を青で表示できないものかと調べたのですが、分かりませんでした。 「SUN」と「SAT」の文字の色を変えるやり方がもしありましたら、教えて頂けませんでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • Excelで曜日と色の自動表示

    Excel2000で B2に『2009』D2に『11』C4に『1』と入力し、あわせて2009年11月1日とう言う意味でD4に『2』で2009年11月2日の意味で、2009年11月1日は日曜日の為、C5に『日』と自動表示され、同時にC4のセルが赤色に自動で変わる関数などの方法を教えてください。 ちなみにI4は『7』で2009年11月7日土曜日でI4も赤色に自動で変わる、つまり5行目に曜日が表示され土曜日と日曜日が赤色に変わるということです。よろしくお願いします。 できれば31日が無い月は31が表示されないほうがよいです。 よろしくお願いします。

専門家に質問してみよう