我正在制作一些统计数据,我想从(仅限上周)和本周选择时间。
本周很容易:
$start = strtotime('this week');
$finish = time();
上周
$start = strtotime('last week');
$finish = ??????
答案 0 :(得分:13)
此?
$start = strtotime('2 weeks ago');
$finish = strtotime('last week');
修改:将信用转换为@Dominic Barnes的评论。
答案 1 :(得分:5)
如果问题是针对统计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
您必须设置一周的开始和一周的结束。 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 />';
以上目前产生:
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,那么日期不正确。为此,这个解决方案是正确的方法,至少为了统计目的。
答案 2 :(得分:2)
这就是你想要的吗?
$start = strtotime('last week');
$finish = strtotime('this week');
答案 3 :(得分:1)
如果出于统计目的搜索上周,从星期一开始,到星期日结束:
$last_week_start = strtotime("monday last week");
$last_week_end = strtotime("monday this week - 1 second");
&#34;本周&#34;很重要,否则,如果这个星期一星期一已经过去(例如,如果已经是星期二),它会给你下一个星期一的星期一&#39;周。
至于月/年,我使用了优雅的mktime方法:
上个月
$last_month_start = mktime(0, 0, 0, date('m')-1, 01);
$last_month_end = mktime(23, 59, 59, date('m'), 0);
去年
$last_year_start = mktime(0, 0, 0, 1, 1, date('Y')-1);
$last_year_end = mktime(23, 59, 59, 1, 0, date('Y'));
答案 4 :(得分:-1)
如果您正在寻找&#34;上周&#34;而不是过去7天
$start = strtotime('Last Week'); // Will give you last Monday
$finish = strtotime('Last Sunday'); // Will give you last Sunday