2014-10-31 42 views
0

我做了一些有效的代碼,但它看起來效率很低。我在畫布上繪製圓圈以顯示在工作日內發生事件的時間。要做到這一點,我發現這一天發生的秒數,然後將其轉換爲分鐘顯示。計算事件發生當天的第二天

我的問題是爲什麼我必須去strtotime(date('...',strtotime(time)))並調用strtotime兩次?

當我剛剛像strtotime(date('Y-m-d',time)那樣,我會得到一個負值。

<?php 
$time_concerned = '2014-10-31 02:00:00'; 

$start_day_temp = strtotime(date('Y-m-d',strtotime($time_concerned))); 
$end_day_temp = strtotime(date('Y-m-d H:i',strtotime($time_concerned))); 
$num_seconds = $end_day_temp - $start_day_temp; 
//divide by 60 to get minutes. divide in half to make fit on 720 scale. 
$num_conv_minutes = (($num_seconds/60)/2); 

echo ' ctx.fillStyle = "#00FF00";'; 
echo ' ctx.beginPath();'; 
echo ' ctx.arc('.$num_conv_minutes.'+ x_inbound,y_truck_arrivals,5,0,2*Math.PI);'; 
echo ' ctx.fill();'; 
echo ' ctx.stroke();'; 
?> 

回答

0
$time_concerned = '2014-10-31 02:00:00'; 
echo strtotime(date('Y-m-d',strtotime($time_concerned))); 
echo "\r\n"; 
echo strtotime($time_concerned); 

試試這個。 Fiddle

這些是差不多一樣的東西。他們與衆不同的唯一原因是因爲當你將字符串轉換爲日期時,你會放棄第二分鐘和幾個小時,所以PHP將它放到午夜,並且你失去了告訴你在凌晨2點做完所有這些事情的部分。

第一次使用它時很有用,因爲您需要獲得午夜時間戳以從其他時間戳中減去。但是,第二次它只是多餘的。

因此,這裏是你怎麼做..

$time_concerned = '2014-10-31 02:00:00'; 
$start_day_temp = strtotime(date('Y-m-d',strtotime($time_concerned))); 
$end_day_temp = strtotime($time_concerned); 
+0

謝謝!清理它一點點。我想沒有辦法繞過使用strtotime()來找到一天的開始。 – sweaty 2014-10-31 14:21:01

+0

還有其他方法可以做到,但這種方式可能是最快的。 – 2014-10-31 14:23:14