PHP:获得前半个小时的分数
如何使用PHP日期/时间获取最后/上一个半小时标记 所以从15:31一直到16:29的时间应该是15:30,因为这是最后半个小时 我希望能够动态地更改分钟数。 因此,如果我将分钟数设置为15,它将得到最后/上一个:15分钟标记 所以从15:16到16:14将返回15:15 这就是我所拥有的,但我就是无法让它发挥作用PHP:获得前半个小时的分数,php,date,hour,Php,Date,Hour,如何使用PHP日期/时间获取最后/上一个半小时标记 所以从15:31一直到16:29的时间应该是15:30,因为这是最后半个小时 我希望能够动态地更改分钟数。 因此,如果我将分钟数设置为15,它将得到最后/上一个:15分钟标记 所以从15:16到16:14将返回15:15 这就是我所拥有的,但我就是无法让它发挥作用 function newtime($time, $offset) { $prev = $time - $offset;
function newtime($time, $offset) {
$prev = $time - $offset;
$newtime = ($offset > 900) ? ($prev - 1800) : ($prev);
return $newtime;
}
$hours = date("H", time());
$minutes = date("m", time());
echo 'Current date: ' . date("Y-m-d H:i:s", time()) . '<br/>';
$time = strtotime("2013-01-23 15:35:00");
echo 'time: ' . date("Y-m-d H:i:s", $time) . '<br/>';
$offset = ($time % 1800);
echo 'prev: ' . $offset . '<br/>';
$newtime = newtime($time, $offset);
echo date("Y-m-d H:i:s", $newtime) . '<br/><br/>';
函数newtime($time,$offset){
$prev=$time-$offset;
$newtime=($offset>900)?($prev-1800):($prev);
返回$newtime;
}
$hours=日期(“H”,time());
$minutes=日期(“m”,time());
回显“当前日期:”。日期(“Y-m-d H:i:s”,time())。'
;
$time=strottime(“2013-01-23 15:35:00”);
回显“时间:”。日期(“Y-m-d H:i:s”,美元时间)。”
;
$offset=($time%1800);
回显“prev:”$抵消。”
;
$newtime=newtime($time,$offset);
回显日期(“Y-m-d H:i:s”,$newtime)。'
;
这真的很难,我就是无法控制自己
非常感谢您的帮助 试试这样的方法:
<?
function newtime($time,$minute=30){
$time=strtotime($time);
$m=date("i",$time)*1;
$h=date("H",$time)*1;
if($m<$minute){
$h=$h-1;
}
return date("H:i",strtotime($h.":".$minute));
}
print newtime("15:31");
//OUTPUT: 15:30
print newtime("16:29");
//OUTPUT: 15:30
print newtime("15:16",15);
//OUTPUT: 15:15
print newtime("16:14",15);
//OUTPUT: 15:15
?>
尝试以下方法:
<?
function newtime($time,$minute=30){
$time=strtotime($time);
$m=date("i",$time)*1;
$h=date("H",$time)*1;
if($m<$minute){
$h=$h-1;
}
return date("H:i",strtotime($h.":".$minute));
}
print newtime("15:31");
//OUTPUT: 15:30
print newtime("16:29");
//OUTPUT: 15:30
print newtime("15:16",15);
//OUTPUT: 15:15
print newtime("16:14",15);
//OUTPUT: 15:15
?>
这非常有效,非常感谢。我现在可以稍微修改一下,以支持更多的时间间隔和分钟。我有一个类似但不同的解决方案,以小时为单位计算,然后加/减半小时(1800秒)函数mynewtime($time,$offset){$prev=$time-$offset;$newtime=($offset>1800)?($prev+1800):($prev-1800);return$newtime;}$time=strottime(“2013-01-23 15:41:00”);$offset=($time%3600);$newtime=mynewtime($time,$offset);回显日期(“Y-m-d H:i:s”,$newtime)。'
代码>这非常有效,非常感谢。我现在可以稍微修改一下,以支持更多的时间间隔和分钟。我有一个类似但不同的解决方案,以小时为单位计算,然后加/减半小时(1800秒)函数mynewtime($time,$offset){$prev=$time-$offset;$newtime=($offset>1800)?($prev+1800):($prev-1800);return$newtime;}$time=strottime(“2013-01-23 15:41:00”);$offset=($time%3600);$newtime=mynewtime($time,$offset);回显日期(“Y-m-d H:i:s”,$newtime)。'
代码>$current_time=date('U',strottime($time));1.这不是当前的unix时间戳-它是$time 2的unix时间戳。strotime($time)将提供与date('U',strotime($time))相同的数据,因此这里不需要date('U')。我知道,我第一次使用date('U')
,没有用户输入,修改速度有点快。我会编辑答案。另外,这会得到最后15分,(所以16:31将返回16:30,因为这也是从小时开始的15分钟中的一个)…我误解了这个问题。不过,我将把这个答案保留在这里,作为参考。$current_time=date('U',strotime($time));1.这不是当前的unix时间戳-它是unix时间戳$time 2.strotime($time)将提供与日期('U',strotime('time')相同的日期,因此这里不需要日期('U')。我知道,我第一次使用date('U')
,没有用户的输入,修改速度有点快。我将编辑答案。此外,这会得到最后15'标记,(因此16:31将返回16:30,因为这也是从小时开始的15'之一)…我误解了这个问题。不过,我会把这个答案保留在这里,作为参考。