• ベストアンサー

PHPでの日付について

PHPとPostgreSQLを利用しています。 日付を取得して、現在の日付と比べて7日以内であれば、指定の文言を表示して、7日以上であれば表示しないようにしたいです。現時点では以下のように記述しています。 $today = date(Y-m-d); if($today - $update_day <= 7) { echo "表示"; } else { echo "非表示"; } ちなみに $todayも$update_dayも形式は2005-09-18のような形です。 ご教授願います。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

PHPのみで解決して良いのならば 日付の文字列を 1970/1/1 00:00:00 からの秒数に変換する strtotime 関数を使用して。 7日を秒数で表現します。 $today = strtotime(date("Y-m-d")); if($today - strtotime($update_day) <= 7*24*60*60) { echo "表示"; } else { echo "非表示"; }

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 日付をPHPに渡す

    下記のようなPHPとHTMLがあります。 HTMLに日付を指定できるフォームを設置しており、ここに入力されたデータを、 PHPの日付の部分に渡せるようにしたいと思っております。 <?PHP //言語設定、内部エンコーディングを指定する mb_language("japanese"); mb_internal_encoding("UTF-8"); //ライブラリ include('googleanalytics.class.php'); //アカウント $ga = new GoogleAnalytics('ID','PW'); $ga->setProfile('ga:GAID'); //日付指定 $today1 = mktime(0, 0, 0, date("m"), date("d")-30, date("Y")); $today2 = mktime(0, 0, 0, date("m"), date("d")-30, date("Y")); $g1 = date("Y-m-d", $today1); $g2 = date("Y-m-d", $today2); $ga->setDateRange($g2,$g1); //読み込み $report = $ga->getReport( array('dimensions'=>urlencode('ga:keyword'), 'metrics'=>urlencode('ga:visits,ga:pageviews'), 'sort'=>'-ga:pageviews' ) ); //表示 echo "<html><head><meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>"; echo "</head><body>"; echo "キーワード:セッション数:ページビュー数<BR>- - - - - <BR>"; foreach( $report as $d => $m ){ echo $d; foreach( $m as $a => $b ){ echo " : ".$b; } echo "<BR>"; } echo "</body></html>"; ?> <html> <br> ■ 期間 <form action="gaapisample.php" method="post"><label>日付(type="date1"):<input type="date" name="date"></label> <br> <form action="gaapisample.php" method="post"><label>日付(type="date2"):<input type="date" name="date"></label> <input type="submit" value="期間設定"></form> </html>

    • 締切済み
    • PHP
  • 土日をカウントしない日付表示

    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); ?> だとしても土日をカウントしているので、思うような結果に至っておりません。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPで日付の入力内容をチェックするには

    PHP初心者です。 テキストボックスに入力された発売日をチェックしてMySQLのDATATIME形式の発売日のフィールドにデータを突っ込むプログラムを組んでいるのですが 1、DATATIMEは4-2-2の形式なので、この通りかチェックしたい 2、発売日が不明な場合は空欄でもOKにしたい 3、入力はされているが4-2-2の形式以外の場合はエラーメッセージを出したい 4、入力された数値が4-2-2の形式でも存在しない日付の場合もエラーメッセージを出したい 以上のことを踏まえて if ($_POST['sale'] == '') { $error['sale'] = 'black'; <input type="text" name="sale" size="10" id="sale"> <?php $sale = mb_convert_kana($_REQUEST['sale'], 'a', 'UTF-8'); if (preg_match("/^\d{4}\-\d{2}\-\d{2}$/", $sale)) { echo htmlspecialchars($_POST['sale'], ENT_QUOTES, 'UTF-8'); } else if ($error['sale'] == 'blank') { echo htmlspecialchars($_POST['sale'], ENT_QUOTES, 'UTF-8'); } ?> 1、2までは何となくできたのですが3のエラーメッセージを出す場合CSSで文字の色を変えたいので <p class="error">* 発売日は 空欄 もしくは 2010-01-01 の形式でご記入ください</p> HTMLでこれを入れる場合、どのようにプログラムを組めばよいのでしょうか? 単純に考えれば if ( ) { } else if ( ) { } else { } みたいな感じになると思うのですがそうするとPHPの中にHTMLを記述しないといけなくなります。 自分はまだPHPの中にHTMLを記述する方法は知りません。 また、4の機能も付ける場合どのようにプログラムを組めばよいかわかりません。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • カレンダーの今日の日付をハイライトする。

    <?php $year = $_POST['year']; if($year == null){ $year = date(Y); } $month = $_POST['month']; if($month == null){ $month = date(n); } $today = $_POST['today']; if($today == null){ $today = date(j); } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"><head> <meta http-equiv="Content-type" content="text/html; charset=EUC-JP"> <meta http-equiv="Content-Style-Type" content="text/css"> <link rel="stylesheet" href="../style.css"> <style type="text/css"> .dot { text-align:center;background-color:#ffffff;font-size:11px;color:black;padding:2px;height:21px } .head_0 { text-align:center;background-color:#ffeeee;font-size:11px;color:red;padding:2px } .head_6 { text-align:center;background-color:#eeffd0;font-size:11px;color:blue;padding:2px } .head { text-align:center;background-color:#ffffee;font-size:11px;color:black;padding:2px } .sun { text-align:center;background-color:#ffeeee;font-size:11px;color:red;padding:2px;height:21px } .sat { text-align:center;background-color:#eeffd0;font-size:11px;color:blue;padding:2px } .today { text-align:center;background-color:#ffcc00;font-size:11px;color:blue;padding:2px } .othr { text-align:center;background-color:#ffffee;font-size:11px;color:black;padding:2px } </style></head> <body><div class="file2" style="height:280px"> <form method = "POST" action = PHP061.php> <?php ///////////////////////////////////////////////////////////////////////カレンダー始まり echo "<table width='200' height='182' border='0'><tr><td valign='top'>"; echo "<table border ='0' bgcolor='#cccccc' cellspacing='1' cellpadding='3' width='170'><tr>\n"; echo "<td colspan='7' bgcolor='white' align='center' style='font-size:12px;font-weight:bold;color:#6666ff'>"; echo $year."年".$month."月</td><tr>"; ////////////////////////////////////////////////////////////////////////曜日表示部分 $weekday = array("SUN","MON","TUE","WED","THU","FRI","SAT"); for($hcnt = 0 ; $hcnt<7 ; $hcnt++){ if($hcnt == 0 or $hcnt == 6){ echo "<td class='head_".$hcnt."'>"; } else { echo "<td class='head'>"; } echo $weekday[$hcnt]."</td>\n"; } echo "</tr>\n"; ////////日数と曜日の計算 $days = cal_days_in_month ( CAL_GREGORIAN, $month, $year ); $week_start = jddayofweek ( cal_to_jd(CAL_GREGORIAN, $month,1, $year) , 0 ); ////////日付が始まる前の空白 for($dot1 = 0 ; $dot1 < $week_start ; $dot1++){ echo "<td align='center' class='dot'></td>\n"; } //////////日付表示部分 for( $day = 1 ; $day <= $days ; $day++ ){ if(($day+$week_start)%7 == 1){ //日曜日 echo "<tr>\n<td class='sun'>$day</td>\n"; } else if(($day+$week_start)%7 == 0){ //土曜日 echo "<td class='sat'>$day</td>\n</tr>\n"; } else if($day == $today){ echo "<td class = 'today'>$day</td>\n"; } else { //平日 echo "<td class='othr'>$day</td>\n"; } } //////////最終日後の空欄の表示 $wend = 35 - ($days + $week_start) ; if($wend < 0){ $wend += 7; } if($wend == 7){ echo ""; //この行はなくてもよい } else if($wend != 0){ for($dot2 =0 ; $dot2 < $wend ;$dot2++){ echo "<td align='center' class='dot'></td>\n"; } } /////////カレンダー終り echo "</tr></table>\n"; echo "</td></tr></table>\n"; ?> <br><br> </div> </form> </body> </html> 上記のソースでカレンダー表示は行えます。 しかし、今日の日付をハイライトすることができません。。 どなたかご存知の方、いらっしゃらないでしょうか? お願いします。

    • ベストアンサー
    • PHP
  • phpのコードでこの2つは何が違うんでしょうか?

    phpのコードでこの2つは何が違うんでしょうか? 問題文が画像に書いてあるもので、上のコードは私が考えたもので、下のコードは画像の問題の答えです 私の解いた答え <?php $age = 10; if(10 <= $age < 20){ echo("10代"); }else if(20 <= $age < 30){ echo("20代"); }else if(30 <= $age < 40){ echo("30代"); }else{ echo("それ以外"); } 画像の問題文の正解 <?php $age = 43; if($age >= 10 && $age < 20){ echo("10代"); }else if($age >= 20 && $age < 30){ echo("20代"); }else if($age >= 30 && $age < 40){ echo("30代"); }else{ echo("それ以外"); }

    • ベストアンサー
    • PHP
  • プルダウンからの日付取得処理

    現在、PHP+SQLiteでWEBページを作成しております。 (初心者です。) フォームに日付をプルダウンで選択出来るように、 $utime = time()+$jisa*3600; $today = getdate($utime); //年のセレクトボックス(±2年) echo "<select name=year>\n"; for ($y=$today[year]+2; $y>=$today[year]-2; $y--) { $sel = ($y == $today[year]) ? " selected" : ""; echo "<option value=\"$y\"$sel>$y</option>\n"; } echo "</select>/\n"; //月のセレクトボックス(12-1月) echo "<select name=mon>\n"; for ($m=12; $m>=1; $m--) { $sel = ($m == $today[mon]) ? " selected" : ""; echo "<option value=\"$m\"$sel>$m</option>\n"; } echo "</select>/\n"; //日のセレクトボックス(31-1日) echo "<select name=day>\n"; for ($d=31; $d>=1; $d--) { $sel = ($d == $today[mday]) ? " selected" : ""; echo "<option value=\"$d\"$sel>$d</option>\n"; } echo "</select>\n"; というコードを記述しております(これはネットを参考にしました)。 これでプルダウンの表示自体は出来たのですが、実際にここから値を取得するにはどうすれば良いかが分かりません・・・。 ご教授お願いいたします。

    • ベストアンサー
    • PHP
  • PHPでカレンダー

    PHPを使ってカレンダーを作成しました。が、コードの意味が良く分かりません。 コードは以下の通りです。 <?php if($_GET['num']==''){ $today_year = date("Y"); //4桁の西暦年 $today_month = date("n"); //1~12の月 }else{ $timestamp = mktime(0,0,0,date("n")+$_GET['num'],date("d"),date("Y")); $today_year = date("Y",$timestamp); $today_month = date("n",$timestamp); //1~12月 } $current = mktime(0,0,0,$today_month,1,$today_year); $first_day = date("w",$current); //1日の曜日を0~6に当てはめる $last_day= date("t",$current); //月の日数 ?> <html> <head> <title>カンレンダー</title> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> </head> <body> <h1><?php print (date("Y年m月",$current)); ?>のカレンダー</h1> <table border="1" cellpadding="0" cellspacing="2"> <tr> <th>日</th><th>月</th><th>火</th><th>水</th><th>木</th><th>金</th><th>土</th> </tr> <?php for($i=1; $i<=$first_day+$last_day; $i++){ if($i%7==1){print ("<tr>");} if($i>$first_day){ print ("<td>".($i-$first_day)."</td>"); }else{ print ("<td>&nbsp;</td>"); } if($i%7==0){print ("</tr>");} } ?> </table> </body> </html> for以降の部分が良く分かりません。よろしくお願いします。※上記のスクリプトで正しく表示されることは確認済です。

    • 締切済み
    • PHP
  • 日付の比較について

    PHPで日付を比較したいのですが、、 どのようにしたらよいかわかりません。 データベースのように大なり小なりで比較できるのでしょうか? 例えば、下記のように記述した場合は日付比較は正常に行われているのでしょうか? 今日の日付 $date = date('Y-m-d'); DBから取得した日付 $str_date = '2005-05-22'; if($date < $str_data){ 処理1 }else{ 処理2 }

    • ベストアンサー
    • PHP
  • 配列が受け取れないのはなぜなのでしょうか?

    カレンダーの日付にリンクをさせようとしているのですが、上手くできません。 リンクさせたい日付をforeachで配列として渡そうと思うのですが、 受け取ってくれません。 なぜ、受け取ることができないのでしょうか? 何が間違っているのでしょうか。 どなたかご指摘、アドバイスなどお願いします。 以下コードです。 <?php $qry = $_SERVER['QUERY_STRING']; if( ereg( "^[0-9]{8}", $qry ) ){ $today = getdate( mktime( 0, 0, 0, substr( $qry,4,2 ), substr( $qry,6,2 ), substr( $qry,0,4 ) ) ); }else{ $today = getdate(); } $f_today = getdate( mktime( 0, 0, 0, $today[mon], 1, $today[year] ) ); $prev_month = date( "Ymd", mktime( 0, 0, 0, $today[mon], 0, $today[year] ) ); $next_month = date( "Ymd", mktime( 0, 0, 0, $today[mon]+1, 1, $today[year] ) ); <table width=170><tr><td> <table width=100%> <tr><td colspan=7><a href="?<?= $prev_month ?>">≪ </a><?= $today[year] ?>年<?= $today[mon] ?>月 <a href="?<?= $next_month ?>"> ≫</a></td></tr> <tr><td>日</td><td>月</td><td>火</td><td>水</td><td>木</td><td>金</td><td>土</td></tr> <tr> <?php for ( $i=0; $i<$f_today[wday]; $i++ ) { echo "<td></td>\n"; } $day = 1; while( checkdate( $today[mon], $day, $today[year] ) ){ $link = sprintf( "%4d%02d%02d", $today[year], $today[mon], $day ); if( $link == 20081014 ){ //← 日付を指定※ここが問題の箇所です。 echo "<td><a href=?date=$link\">$day</a></td>\n"; }else{ echo "<td>$day</td>\n"; } if( $f_today[wday] == 6) echo "</tr><tr>"; $day++; $f_today[wday]++; $f_today[wday] = $f_today[wday] % 7; } if( $f_today[wday] > 0 ){ while( $f_today[wday] < 7 ) { echo "<td> </td>\n"; $f_today[wday]++; } } else { echo "<td colspan=7></td>\n"; } ?> </tr> </table> </td></tr></table> 下記のように日付を配列にするとダメです。 $day = 1; //以下を変更 $data = array( "200810005", "200810010", "20081011", "20081015", "20081025", "20081030" ); foreach( $data as $value ) { $val = $value; while( checkdate( $today[mon], $day, $today[year] ) ){ $link = sprintf( "%4d%02d%02d", $today[year], $today[mon], $day ); if( $link == $val ){  // ← 配列で代入※配列として受け取ってくれない。 echo "<td><a href=?date=$link\">$day</a></td>\n"; }else{ echo "<td>$day</td>\n"; } if( $f_today[wday] == 6) echo "</tr><tr>"; $day++; $f_today[wday]++; $f_today[wday] = $f_today[wday] % 7; } } ↑ここまで なぜ、できないのかが分からないので、色々試しても上手くいきません。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • PHPで指定した日付の1ケ月前表示

    MySQLにある日付を拾ってきて表示しています。 <?php echo $row_target_date['ap_date']; ?> 上記のPHPでは、MySQLのテープルのap_dateカラムにある日付を拾ってきて表示するようにしています。 この1ケ月前を表示したいと考えています。 <?php echo "1月前:" . date("Y/m/d",strtotime("-1 month" ,strtotime("echo $row_target_date['ap_date']"))) . "<BR>"; ?> では表示できませんでした。 表示方法についてご指導いただきたくお願い致します。

    • ベストアンサー
    • PHP
このQ&Aのポイント
  • NURO光を使用してひかりTVを視聴する方法について教えてください。
  • ONUがWi-Fiに対応している場合、バッファローWSR-3200AX4Sを使用して視聴できます。
  • 地デジやBSが見れない場合、TVチューナーの設定を確認する必要があります。
回答を見る

専門家に質問してみよう