Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果服务器日期/时间介于两个时间值之间,则php显示事件_Php_Date_Time - Fatal编程技术网

如果服务器日期/时间介于两个时间值之间,则php显示事件

如果服务器日期/时间介于两个时间值之间,则php显示事件,php,date,time,Php,Date,Time,我不想用MySQL做这件事,因为我认为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.... 直到一周中的每一天,出于某种原因,我似乎无法确定这一点,而且

我不想用MySQL做这件事,因为我认为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 } ?>
函数是时间窗口($dayName、$startHour、$startMinute、$endHour、$endMinute)
{ 
$dayName=ucfirst($dayName);
列表($dayNow,$timeNow)=分解(“|”),日期('l|Hi');
报税表(
ucfirst($dayName)=$dayNow和
$timeNow>=sprintf(“%02d%02d”,$startHour,$startMinute)和
$timeNow
内容

只要您愿意使用服务器的时间而不是客户端的时间,就可以使用该功能完成此操作

例如,如果您只想根据一周中的某一天进行此操作:

<?php

$now = getdate();

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

内容A
您可以使用date(l)函数以文字形式获取实际的工作日(星期一、星期二等),以便检查工作日

使用mktime函数将您的时间(例如星期一,凌晨2:30)转换为时间戳,并使用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
$today\u start=mktime(2,30,0,日期('m')、日期('d')、日期('Y'));
$today_end=mktime(2,29,0,日期('m'),(日期('d')+1),日期('Y');
如果($today\u starttime())
//代码

mktime的工作原理如下:mktime(小时、分钟、秒、月、日、年)

。到目前为止您尝试了什么?PHP是一种图灵完整语言,因此,除非您在某些方面达到实际限制,否则一切皆有可能。您在某些特定方面存在问题吗?是的,但时间在该脚本中起着重要作用。该脚本必须显示内容,直到第二天凌晨2:29,然后在凌晨2:30,切换到当前的日期week.getdate()还提供了有关小时和分钟部分的信息。请参见编辑,以获取一个函数,该函数将为您提供一周中的某个偏移日,您可以使用该偏移日来选择使用开关显示哪些内容。您能举一个示例说明您的意思吗?我不熟悉此方法。嘿,我希望如此:使用日期(l)(可能在切换中)要获得实际的工作日,我想这应该是显而易见的。使用:$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('Y')),您总是在凌晨2:30获得今天的时间戳。现在您可以检查$today_start$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