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 - Fatal编程技术网

PHP在一周内检查两个日期是否有误

PHP在一周内检查两个日期是否有误,php,date,Php,Date,我每周两天有两个活动。每天13:15开始。每周二和周四。我需要检查最近的事件(from now())是星期二(13:15之前)还是星期四(13:15之前),以正确设置javascript倒计时(它将获得用于计数的日期(“Y-m-d H:I:s”)字符串) 伪示例: if( tuesday("13:15") == 'over' && thursday("13:15") == 'remaining' ) { echo 'Next event start thursday 13:

我每周两天有两个活动。每天13:15开始。每周二和周四。我需要检查最近的事件(from now())是星期二(13:15之前)还是星期四(13:15之前),以正确设置javascript倒计时(它将获得用于计数的日期(“Y-m-d H:I:s”)字符串)

伪示例:

if( tuesday("13:15") == 'over' &&  thursday("13:15") == 'remaining' ) {
  echo 'Next event start thursday 13:15'; 
  // need time format here for the thursday
} else {
  echo 'Next event start tuesday 13:15'; 
  // need time format here for the tuesday
}
我正在努力比较时间范围:

$now = new DateTime(date("Y-m-d"));

$event_time = '13:15';
$event_tuesday = new DateTime("next tuesday");
$event_thursday = new DateTime("next thursday");

echo $diff_tuesday = $event_tuesday->diff($now)->format("%a");
echo $diff_thursday = $event_thursday->diff($now)->format("%a");
但我认为这是错误的。
有人能给我一个提示吗?

你可以使用PHP的强大功能,它可以理解字符串,比如下周二的
下个月+1天的
,等等

请参阅以下代码段中的注释

还请注意,您必须

//当前瞬间:
$now=时间();
//如果是星期二,则为当天的13:15(无论当前时间),
//否则,下一个星期二:
$thisTuesday1315=标准时间(“本周二13:15”);
//如果是星期四,则为当天的13:15(无论当前时间),
//否则,下一个星期四:
$thisThursday1315=标准时间(“本周四13:15”);

如果($thisttuesday1315,您可以使用PHP的强大功能,它可以理解字符串,如
下周二
下个月+1天
,等等

请参阅以下代码段中的注释

还请注意,您必须

//当前瞬间:
$now=时间();
//如果是星期二,则为当天的13:15(无论当前时间),
//否则,下一个星期二:
$thisTuesday1315=标准时间(“本周二13:15”);
//如果是星期四,则为当天的13:15(无论当前时间),
//否则,下一个星期四:
$thisThursday1315=标准时间(“本周四13:15”);

如果($thisTuesday1315我们需要将当前时间包括在等式中

此外,根据事件的时间,如果事件发生在今天或下一天,我们必须进行锻炼,这将在
prependThisOrNext()
方法中进行

在下面的解决方案中,您不会被限制为一周只参加两次活动

<?php

function prependThisOrNext($dayAndTime)
{
    $prefix = strtotime($dayAndTime) > strtotime('now') ? 'this ' : 'next ';
    return $prefix . $dayAndTime;
}

function sortEvents($events = [])
{
    $list = [];
    foreach ($events as $event) {
        $prependedEvent = prependThisOrNext($event);
        $list[strtotime($prependedEvent)] = $prependedEvent;
    }

    asort($list);
    return $list;
}

function getTheNextEvent($events = [])
{
    $sortedList = sortEvents($events);
    return array_shift($sortedList);
}

$events = ['Tuesday 13:15', 'Thursday 22:15'];

$nextEvent = getTheNextEvent($events);

echo 'Next event: ' . $nextEvent;

我们需要将当前时间包括在等式中

此外,根据事件的时间,如果事件发生在今天或下一天,我们必须进行锻炼,这将在
prependThisOrNext()
方法中进行

在下面的解决方案中,您不会被限制为一周只参加两次活动

<?php

function prependThisOrNext($dayAndTime)
{
    $prefix = strtotime($dayAndTime) > strtotime('now') ? 'this ' : 'next ';
    return $prefix . $dayAndTime;
}

function sortEvents($events = [])
{
    $list = [];
    foreach ($events as $event) {
        $prependedEvent = prependThisOrNext($event);
        $list[strtotime($prependedEvent)] = $prependedEvent;
    }

    asort($list);
    return $list;
}

function getTheNextEvent($events = [])
{
    $sortedList = sortEvents($events);
    return array_shift($sortedList);
}

$events = ['Tuesday 13:15', 'Thursday 22:15'];

$nextEvent = getTheNextEvent($events);

echo 'Next event: ' . $nextEvent;

好的,在德国,现在我们得到了星期四21:18。如果我用live date:strotime(“下周二22:00”)>strotime(“下周四22:00”)尝试你的代码,它应该会给我这个周四的答案。但下周二会给我!。问题是“下一个”字符串…因为我们有星期四,不需要下一个。你明白我的问题了吗?@trajo,现在我明白问题了;在玩了
strotime
之后,我发现
this tu二
返回今天的瞬间,如果今天是星期二(不管当前时间如何),否则它将返回即将到来的星期二。我已相应地更新了代码段。工作正常,我将其标记为正确答案!Thx Alex…@other请参阅Ali的解决方案。用于动态更多事件的一组很棒的函数。但出于我的需要,我将使用Alex one并保存Ali的一个;)好的,在德国,现在我们得到了星期四21:18。如果我用live date:strotime(“下周二22:00”)>strotime(“下周四22:00”)尝试你的代码,它应该会在本周四给我答案。但下周二给我答案!。问题是“下一个”字符串…因为我们有星期四,不需要下一个。你明白我的问题了吗?@trajo,现在我明白问题了;在玩了
strotime
之后,我发现
this tu二
返回今天的瞬间,如果今天是星期二(不管当前时间如何),否则它将返回即将到来的星期二。我已相应地更新了代码段。按预期工作,并将其标记为正确答案!Thx Alex…@other请参阅Ali的解决方案。一组用于动态更多事件的强大函数。但出于我的需要,我将使用Alex one并保存Ali的一个;)一个伟大的解决方案,Thx!我把Alex一号标记为答案,因为他只关注逻辑部分,速度更快,但你给出了一个很好的动态使用示例。我在其他地方需要它。我把它标为有用!一个伟大的解决方案,THX!我把Alex一号标记为答案,因为他只关注逻辑部分,速度更快,但你给出了一个很好的动态使用示例。我在其他地方需要它。我把它标为有用!