我有一個計算離開了產品上市日至expire.When我運行下面的代碼,我得到浮點數如3.4722222222222E-5減法日期收益浮動
$days_left = date('d', strtotime($this->expiry_date) - strtotime($date))/(60 * 60 * 24);
$this->days_left = $days_left;
當數函數我舍結果
(round)$this->days_left
一個的愈來愈0
我有一個計算離開了產品上市日至expire.When我運行下面的代碼,我得到浮點數如3.4722222222222E-5減法日期收益浮動
$days_left = date('d', strtotime($this->expiry_date) - strtotime($date))/(60 * 60 * 24);
$this->days_left = $days_left;
當數函數我舍結果
(round)$this->days_left
一個的愈來愈0
strtotime($this->expiry_date) - strtotime($date)
讓你在幾秒鐘的時間差。
date('d', $time)
會給你那一天$time
的一部分,刪除任何月份/年的部分。並且你已經在一天的數字中劃分了每秒的秒數?顯然,浮點會導致計算機盲目地進行分工。
相反,溝date
函數來獲取的天數,但在一天的秒數分配時間(秒):
$days_left = (strtotime($this->expiry_date) - strtotime($date))/(60 * 60 * 24);
,你不「類型轉換」到round
這不存在。根據意見,做round($this->days_left)
時感謝。它工作正常 – user1180807 2013-05-09 16:17:33
如果你想正確計算日期,你應該使用DateTime
對象。日期之間的差異(東西的持續時間)應該呈現爲DateInterval
對象,這會給出確切的區別。
嘗試'round($ this-> days_left);'not'(round)$ this-> days_left'([manual](http://php.net/manual/ru/function.round.php)) – BlitZ 2013-05-08 11:58:29
是否確定$ this-> expiry_date始終具有該值,請檢查該值是否在您獲得該種浮動結果 – kumar 2013-05-08 13:10:10