0

私が見ているように、MySQLでこれをやろうとしているのは一般的ではありません。サーバーの時刻と日付を参照として使用して、次のような情報を表示する PHP スクリプトを作成しようとしているだけです。

Monday 2:30am to Tuesday 2:29am - Content A
Tuesday 2:30am to Wednesday 2:29am - Content B
Wednesday 2:30am to Thursday 2:29am - Content C
and so on....

毎日がカバーされるまで、何らかの理由でこれを釘付けにすることはできず、そこから構築する例もないようです。これは何らかの理由で不可能ですか?


編集


私は次のコードを使用しましたが、本来あるべきほど信頼できないことが証明されています。

function isInTimeWindow($dayName, $startHour, $startMinute, $endHour, $endMinute) 
{ 
   $dayName = ucfirst($dayName); 
   list($dayNow, $timeNow) = explode('|', date('l|Hi')); 
   return ( 
      ucfirst($dayName) == $dayNow and 
      $timeNow >= sprintf('%02d%02d', $startHour, $startMinute) and 
      $timeNow <= sprintf('%02d%02d', $endHour, $endMinute) 
   ); 
} 
// tuesdays during day 
if(isInTimeWindow('tuesday', 02, 30, 23, 00)) { 
?>
CONTENT
<?php } ?>
4

2 に答える 2

0

date(l) php manual date() function function を使用して、実際の平日を単語 (月曜日、火曜日、...) で取得できるため、平日を確認できます。

mktime 関数php マニュアル mktime() 関数を使用して時刻 (月曜日、たとえば午前 2 時 30 分) をタイムスタンプに変換し、時刻関数php マニュアル time() 関数を使用して現在の時刻の間にあるかどうかを確認します

編集:ここに例があります:

$today_start = mktime(2, 30, 0, date('m'), date('d'), date('Y'));
$today_end = mktime(2, 29, 0, date('m'), (date('d') + 1), date('Y'));


if ( $today_start < time() && $today_end > time() )
    // code

mktime は次のように機能します: mktime( 時、分、秒、月、日、年 )

于 2013-11-07T12:57:42.747 に答える
0

クライアントの時間ではなくサーバーの時間を使用することに満足している限り、これはgetdate()関数を使用して行うことができます。

たとえば、曜日に基づいて実行したい場合:

<?php

$now = getdate();

switch($now['wday']) {
case 0:
?>
Content A
<?
break;
etc.

編集:これをより詳細に行う方法は次のとおりです。

getdate() は、時間と分の部分に関する情報も提供します。

次のような関数を使用できます。

// Get's the 0-indexed day of the week offset so each "day" starts and 2:30am
function get_offset_day() {
    $now = getdate();
    if ($now['hours']*60 + $now['minutes'] < 150) { // less 2h 30m after midnight => still "yesterday"
        $answer = $now['wday']-1;
    }
    else {
        $answer = $now['wday'];
    } 
    if ($answer < 0) return 6;
    return $answer;
}
于 2013-11-07T12:50:53.583 に答える