【发布时间】:2015-01-04 20:56:36
【问题描述】:
我正在寻找一种方法来获取最近的偶数小时和相关日期。获得时间并没有真正成为问题,但获得一天已经成为问题。
从技术上讲,我只需要在时钟上找到下一个最接近的偶数小时,日期与该小时相关联,所以如果下一个偶数小时为 0,那么它应该提前一天,因为它是新一天的开始。
例子:
现在是 2014-11-08 22:05:00 -> 下一个最近的应该是 2014-11-09 00:00:00
现在是 2014-11-08 20:35:37 -> 下一个最近的应该是 2014-11-08 22:00:00(这部分很简单)
最简单的方法是什么? 这是我目前尝试过的,但他们都在午夜时分苦苦挣扎
试试#1
$date = new DateTime(date('Y-m-d H:i'));
$nextDate = (intval($date->format('H'))+2) % 24;
if ($date->format('H')+2 > 24 || $nextDate == 0)
{
if($date->format('H')+2 > 24)
$nextDate = $date->format('H')+2 - ($date->format('H')+2 - 24);
dd($nextDate);
$nextDate = date('Y-m-d', strtotime("+1 days")) .' '. $nextDate . ':01';
}
else
$nextDate = date('Y-m-d') .' '. $nextDate . ':01';
尝试#2
$hours = [0=>2, 1=>2, 2=>4, 3=>4,4=>6,5=>6,6=>8,7=>8, 8=>10, 9=>10, 10=>12, 11=>12,12=>14, 13=>14,14=>16,15=>16,16=>18,17=>18, 18=>20,19=>20,20=>22, 21=>22, 22=>0,23=>0];
if ($hours[date('G')] == 0)
{
if(date('G') != 0)
$nextDate = date('Y-m-d') . ' ' . $hours[date('G')] . ':01:00';
else
$nextDate = date('Y-m-d', strtotime("+1 days")) . ' ' . $hours[date('G')] . ':01:00';
}
else
$nextDate = date('Y-m-d') . ' ' . $hours[date('G')] . ':01:00';
【问题讨论】:
-
距离 20:35:37 -> 22:00:00 最近的偶数小时是多少?最近的不应该是 20:00:00 吗?
-
在这个意义上是的。不是我要找的东西,已编辑:)。
-
啊,我明白了...嗯,当您的问题没有描述您正在寻找的内容时,这肯定会让回答问题变得更加困难。
-
发布一些代码,详细说明您尝试过的内容以及出现的问题。
-
我已按要求添加了我尝试过的代码 :) 他们都在午夜左右失败了 ^^