PHP在一周内检查两个日期是否有误
我每周两天有两个活动。每天13:15开始。每周二和周四。我需要检查最近的事件(from now())是星期二(13:15之前)还是星期四(13:15之前),以正确设置javascript倒计时(它将获得用于计数的日期(“Y-m-d H:I:s”)字符串) 伪示例: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:
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一号标记为答案,因为他只关注逻辑部分,速度更快,但你给出了一个很好的动态使用示例。我在其他地方需要它。我把它标为有用!