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 手动 date() 函数来获取实际的工作日(星期一,星期二,...),以便您检查工作日。

使用 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 回答