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

PHP:获得前半个小时的分数

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;

如何使用PHP日期/时间获取最后/上一个半小时标记

所以从15:31一直到16:29的时间应该是15:30,因为这是最后半个小时

我希望能够动态地更改分钟数。 因此,如果我将分钟数设置为15,它将得到最后/上一个:15分钟标记 所以从15:16到16:14将返回15:15

这就是我所拥有的,但我就是无法让它发挥作用

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'之一)…我误解了这个问题。不过,我会把这个答案保留在这里,作为参考。