2014-03-05 38 views
1

如果不是30分鐘過去,是否有辦法顯示時間的小時數,但顯示:30時間過去30分鐘的時間?24小時顯示時間...如果不是30分鐘,我可以顯示小時嗎?

http://new.clairvoyant.co/details/?Pin=4378這是我的頁面。在時間表中,您可以看到這些街區的時間確實很短,但顯示時間段真的很困難。

如果開始和結束時間只有幾個小時,我想要做的是顯示一個格式,如12pm - 4pm。如果其中一個是30分鐘,則顯示12pm - 4:30 pm。

這是否能通過格式化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> 
+0

將日期** **始終是在一小時或半小時? – Mooseman

+0

與您的問題沒有關係,但如果兩個時間段都具有相同子午線,您也可能想要刪除多餘的「am」或「pm」。縮短「8 am-11am」至「8-11am」; 「下午2點至4點30分」至「下午2點30分」;和「上午11點至下午1點」停留在「上午11點至下午1點」。 – Tenner

回答

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

+0

謝謝你。我只是想知道,是否有可能將Tenner的想法融入上面? – Lee

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')); 
    } 
相關問題