TDS*_*Sii 5 php date strtotime
我正在制作一些统计数据,我想从(仅限上周)和本周选择时间.
本周很容易:
$start = strtotime('this week');
$finish = time();
Run Code Online (Sandbox Code Playgroud)
上周
$start = strtotime('last week');
$finish = ??????
Run Code Online (Sandbox Code Playgroud)
Jon*_*nah 14
这个?
$start = strtotime('2 weeks ago');
$finish = strtotime('last week');
Run Code Online (Sandbox Code Playgroud)
编辑:将信用改为@Dominic Barnes的评论.
如果问题是统计PHP脚本.然后所有答案和基本上问题都是错误的.
(或周一到周日,取决于您习惯的日历,但在PHP中为一周)
这意味着,它不是从今天减去7天.那不是最后一周或本周.因此,当前选择的答案是正确的,并在7天后计算.在测试时,它的星期天,所以它显示正确.但是通过编辑现在的日期,您可以看到问题:
// Selected answer:
$start = strtotime('2 weeks ago');
$finish = strtotime('last week');
// But if today isn't Sunday, you can see the code is wrong:
echo date("d.m.Y", strtotime("1 week ago", strtotime('yesterday')));
// Output: 15.08.2015 00:00:00 - 17.08.2015 00:00:00
Run Code Online (Sandbox Code Playgroud)
您必须设置一周的开始和一周的结束.strtotime()可以支持更多的东西,所以你最有可能使这个答案更好,更整洁.但是你得到了工作代码和一个很好的逻辑例子......
我建议的解决方案
$today = strtotime('today 00:00:00');
$this_week_start = strtotime('-1 week monday 00:00:00');
$this_week_end = strtotime('sunday 23:59:59');
$last_week_start = strtotime('-2 week monday 00:00:00');
$last_week_end = strtotime('-1 week sunday 23:59:59');
echo date('d.m.Y H:i:s', $today) . ' - Today for example purposes<br />';
echo date('d.m.Y H:i:s', $this_week_start) . ' - ' . date('d.m.Y H:i:s', $this_week_end) . ' - Currently running week period<br />';
echo date('d.m.Y H:i:s', $last_week_start) . ' - ' . date('d.m.Y H:i:s', $last_week_end) . ' - Last week period<br />';
Run Code Online (Sandbox Code Playgroud)
以上目前产生:
30.08.2015 00:00:00 - 今天为例如
24.08.2015 00:00:00 - 30.08.2015 23:59:59 - 当前正在运行的周期
17.08.2015 00:00:00 - 23.08.2015 23:59 :59 - 上周期间
因为对于统计数据,它必须是准确的,如果结束时间是00:00:00,那么该日期将不计入.如果日期是一天后的00:00:00,那么日期不是正确.在那里,这个解决方案是正确的方法,至少为了统计目的.