24小时显示时间......如果不是30分钟,我可以显示小时吗?

时间:2014-03-05 15:44:12

标签: php xml strtotime

有没有办法只显示一段时间,如果它不是30分钟,但显示:30表示时间是30分钟?

http://new.clairvoyant.co/details/?Pin=4378这是我的页面。在时间表中,您可以看到块真的很短,在它们中显示时间段真的很困难。

如果开始和结束时间只有几个小时,我想做的是显示一个像下午12点到下午4点的格式。如果其中一个是30分钟,则在下午12点至下午4:30显示。

这是否可以通过格式化strttotime来完成?输入变量在24小时(24:00:00)。结束输出格式为12小时。

$Start12 = strtotime($Shift['Start']);
$Stop12 = strtotime($Shift['Stop']);

输出如下:

<span class='c'>".date('g:ia',$Start12)." to ".date('g:ia',$Stop12)."</span>

2 个答案:

答案 0 :(得分:1)

假设分钟数为30

function printDate30($date){
    if(date('i',$date) == 30){
        return date('g:ia',$date);
    }else{
        return date('ga',$date);
    }
}

并使用

echo "<span class='c'>".printDate30($Start12)." to ".printDate30($Stop12)."</span>";

演示:http://codepad.org/c2AhcELC

答案 1 :(得分:1)

这是一个很好的示例配对,我没有语法检查这个:

    // Create a new object from your start time
    $firstDateTime = new DateTime( strtotime( $Shift['Start'] ) );
    $firstDateTimeFormatter = 'H'; // Set the object to be default formatted for the hour only

    // Repeat, blah...
    $secondDateTime = new DateTime( strtotime( $Shift['Stop'] ) );
    $secondDateTimeFormatter = 'H';

    // If the minutes for this object are not 00 then we want to format the time
    // differently, these two checks do that
    if( $firstDateTime->format('i') != '00' )
        $firstDateTimeFormatter = 'H:m';

    if( $secondDateTime->format('i') != '00' )
        $secondDateTimeFormatter = 'H:m';

    // See the results
    echo $firstDateTime->format( $firstDateTimeFormatter );
    echo $secondDateTime->format( $secondDateTimeFormatter );


    // Put this into a convenient function to use
    function formatTime( $time )
    {
        $dt = new DateTime( strtotime( $time ) );
        return ( $dt->format('i') != '00' ? $dt->format('H:i') : $dt->format('H') );
    }