質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

1616閲覧

カレンダーで今日より前の色をcssで変えたい

Johnwick

総合スコア3

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2021/01/24 09:24

イメージ説明

今日より前の日付を灰色にしたいです。そのために★部分にif文で条件を書いたのですが、なぜか3日から9日だけ灰色になりません。
やり方を教えてください。

PHP

1<?php 2//タイムゾーン設定 3date_default_timezone_set('Asia/Tokyo'); 4 5// 前月・次月リンクが押された場合は、GETパラメーターから年月を取得 6if (isset($_GET['ym'])) { 7 $ym = $_GET['ym']; 8} else { 9 // 今月の年月を表示 10 $ym = date('Y-m'); 11} 12 13// タイムスタンプを作成し、フォーマットをチェックする 14$timestamp = strtotime($ym . '-01'); 15if ($timestamp === false) { 16 $ym = date('Y-m'); 17 $timestamp = strtotime($ym . '-01'); 18} 19 20// 今日の日付 フォーマット 例)2018-07-3 21$today = date('Y-m-j'); 22 23 24// カレンダーのタイトルを作成 例)2017年7月 25$html_title = date('Y年n月', $timestamp); 26 27// 前月・次月の年月を取得 28$prev = date('Y-m', strtotime('-1 month', $timestamp)); 29 30$next = date('Y-m', strtotime('+1 month', $timestamp)); 31 32//月末日までの日数を取得 33$day_count = date('t', $timestamp); 34//1日の曜日を取得 35$first_youbi = date('w', $timestamp); 36//月末日の曜日を取得 37$last_youbi = date('w', strtotime($ym . $first_youbi)); 38 39$aryCalendar = []; 40$j = 0; 41 42 43//1日開始曜日までの穴埋め 44for ($i = 0; $i < $first_youbi; $i++) { 45 $aryCalendar[$j][] = ''; 46} 47 48//1日から月末日までループ 49for ($i = 1; $i <= $day_count; $i++) { 50 51 //日曜日まで進んだら改行 52 if (isset($aryCalendar[$j]) && count($aryCalendar[$j]) === 7) { 53 $j++; 54 } 55 $aryCalendar[$j][] = $i; 56} 57 58//月末曜日の穴埋め 59for ($i = count($aryCalendar[$j]); $i < 7; $i++) { 60 $aryCalendar[$j][] = ''; 61} 62 63$aryWeek = ['日', '月', '火', '水', '木', '金', '土']; 64 65?> 66 67 68<html> 69 70 <table class="calendar"> 71 72 73 <!-- 曜日の表示 --> 74 <tr> 75 <?php foreach ($aryWeek as $week) : ?> 76 <th><?php echo $week ?></th> 77 <?php endforeach; ?> 78 </tr> 79 80 81 <!-- 日数の表示 --> 82 83 <?php foreach ($aryCalendar as $days) : ?> 84 85 <tr> 86 <?php foreach ($days as $day) : ?> 87 88 89 90 <?php if ($ym . '-' . $day !== date('Y-m-j')) : ?> 91   92        93        <!-- 今日以外の日 --> 94 <td> 95 96 <!-- ★ --> 97 <a <?php if (($ym . '-' . $day) < date('Y-m-j')) echo 'class= color' ?> href="./contactform.php"> 98 99 <?php echo $day ?> 100 101 </a> 102 </td> 103 104 <?php else : ?> 105        106        107 <!--  今日 --> 108 <td class=" today "> 109 110 <a href="./contactform.php"> 111 112 <?php echo $day ?> 113 114 </a> 115 116 </td> 117 118 119 <?php endif; ?> 120 121 122 <?php endforeach; ?> 123 </tr> 124 125 <?php endforeach; ?> 126 127 128 </table> 129 130</html> 131

CSS

1.color { 2 background-color: gray; 3}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

文字列型の比較って、辞書順だったはずなので、日付の順の比較にならないと思います。

2021-01-3
2021-01-24
↑3より2の方が辞書として先。

php

1var_dump(('2021-01-3' < date('Y-m-j'))); 2//bool(false)

timeに変換したほうが良いでしょう。数値で比較できます。

php

1var_dump((strtotime('2021-01-3') < time())); 2//bool(true) 3

他も確認

php

1<?php 2var_dump((strtotime('2021-01-3') < time())); 3var_dump((strtotime('2021-01-4') < time())); 4var_dump((strtotime('2021-01-7') < time())); 5var_dump((strtotime('2021-01-9') < time())); 6var_dump((strtotime('2021-01-20') < time())); 7var_dump((strtotime('2021-01-23') < time())); 8var_dump((strtotime('2021-01-24') < time())); 9var_dump((strtotime('2021-01-25') < time())); 10var_dump((strtotime('2021-01-30') < time())); 11

あと個人的には、MMにするならDDにそろえた方がいいかな。
0埋めするなら両方する、しないなら両方しない。

より望ましいのはDateTimeオブジェクトとして比較する。

投稿2021/01/24 09:35

編集2021/01/24 09:37
m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問