2012-03-26 45 views
0

也许我做错了什么,但是我看不到它的重点......php date&strtotime

今天是一周中的某一天。我必须知道 - 从上周一到今天有多少天?

$date_1d = date('Y-m-d', strtotime ('last Monday'));      
// last monday 

$date_today = date('Y-m-d');            
// actual date, today 

$ile_dni = (strtotime($date_today) - strtotime($date_1d))/(60*60*24); 
// difference in days - how many days have elapsed from today to last monday 

我有2个相同的脚本如以上在同一目录中的同一服务器

first said: 

&date_1d = > 2012-03-19 

$date_today => 2012-03-26 

strtotime($date_today) = > 1332720000 

strtotime($date_1d) = > 1332115200 

$ile_dni = > 7 

second said: 

&date_1d = > 2012-03-19 

$date_today => 2012-03-26 

strtotime($date_today) = > 1332712800 

strtotime($date_1d) = > 1332111600 

$ile_dni = > 6.9583333333333 

:原因正确的答案是第一上。以及如何处理这种情况?

+3

最新日期('N')是什么错? – Vytautas 2012-03-26 08:03:39

回答

1

$ile_dni的差异使用ceil()从“上周一出产生的时间戳和的strtotime,我敢肯定有一个更好的方式与date('N')做到这一点,你可以做

$ile_dni = date('N')-1; 

如果你想星期一ile_dni为0,星期二等1。

+0

thnks,现在我会尝试与单元格(),看看是什么将会。 thnks – Andrew 2012-03-26 13:10:10

1

你是否同时运行这两个脚本?我猜测有一个时区/ DST问题正在进行。请注意,您计算日期差异的方法非常容易受到这类问题的影响。如果您使用PHP 5.3或更高版本,请使用date_diff

+0

thnks你的帮助 – Andrew 2012-03-26 13:10:51