Round formatted time value to the nearest half-hour

后端 未结 3 1211
天命终不由人
天命终不由人 2020-12-10 04:40

I need 0:30 through 0:59 to round down to 0:30.
I need 0:00 through 0:29 to round up to 0:30.

Example: 08:56 will round down to 08:30 where 09:00 and 09:01 wil

相关标签:
3条回答
  • 2020-12-10 05:21
    you have to do: 
    
    $hour = date('H'); 
    $minute = date('i');
    $minute = ($minute < 30 || $minute > 30) ? 30 : $minute;
    
    0 讨论(0)
  • 2020-12-10 05:24

    Why don't you just do this:

    $hour = date('H');
    $minute = (date('i')>30)?'30':'00';
    echo "$hour:$minute";
    

    DEMO

    UPDATE
    I just realized that you asked all time to be rounded to :30:

    $hour = date('H');
    $minute = '30'; //always 30
    echo "$hour:$minute";
    
    0 讨论(0)
  • 2020-12-10 05:24

    My solution to a real round are the next options:

    //Round Down
    date('H:i',floor(time() / (15 * 60)) * (15 * 60))
    
    //Round Up/Down
    date('H:i',round(time() / (15 * 60)) * (15 * 60))
    
    //Round Up
    date('H:i',ceil(time() / (15 * 60)) * (15 * 60))
    

    Replace time() with the time you need, and 15 with the minutes you like to round near to.

    Example:

    $currentTime = time();
    echo('Current Time: ' . date('H:i',$currentTime) . '<br>Rounded Up 15 Minutes time: ' . date('H:i',ceil($currentTime / (15 * 60)) * (15 * 60)));
    
    0 讨论(0)
提交回复
热议问题