2012-02-29 101 views
1

尋找以兩個日期之間的天數的形式形成變量。php`strtotime`變量不返回負數?

$dayDiff = round((strtotime('2012-02-18') - strtotime('2012-02-22'))/86400); 

上面顯示「-4」這是正確的!

$newDate= date('Y-m-d', strtotime($dayDiff . " day")); 

上面對待$dayDiff爲正數和吐出「2012-02-25」代替的「2012-02-14」有用的結果。有任何想法嗎?

回答

4

這將輸出:

$dayDiff = round((strtotime('2012-02-18') - strtotime('2012-02-22'))/86400); 
echo $newDate= date('Y-m-d', strtotime($dayDiff . " day", strtotime('2012-02-18'))); 

或:

$firstDate = strtotime('2012-02-18'); 
$dayDiff = round(($firstDate - strtotime('2012-02-22'))/86400); 
echo $newDate= date('Y-m-d', strtotime($dayDiff . " day", $firstDate)); 

strtotime將要從當前時間的工作,而不是從18日,這就是爲什麼你輸出:echo date('Y-m-d', strtotime('now'));它將輸出今天的日期,echo date('Y-m-d', strtotime('now - 4 days')); 25,和echo date('Y-m-d', strtotime('2012-02-18 - 4 days')); 18日 - 4日將輸出14

上的strtotime

更多的信息:http://php.net/manual/en/function.strtotime.php

+1

這做到了,我沒有完全理解了'strtotime',謝謝對於解釋 – ToddN 2012-02-29 23:58:52

+0

@ToddN請看我附加的鏈接,它解釋了幾乎所有你需要知道的關於strtotime。但基本上,strtotime從epoc時間開始(1970年1月1日@ 00:00:00) - http://en.wikipedia.org/wiki/Unix_time。讓我知道你是否需要更多的幫助 – 2012-03-01 00:01:42