2012-02-29 109 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