上周,本周(php)

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的评论.

  • 注意:这个问题和答案不匹配。如果问题是关于周的,那么一周的开始是星期一,结束是星期日。当然取决于你住在哪个地区。然而,strtotime('1 week ago') 实际上会以 7 天为基础工作。这个答案是为了问题,如何获取 7 天前的数据,而不是统计程序,应该显示上周的统计数据!调试代码: `echo date("dmY", strtotime("1 周前", strtotime('yesterday')));` (2认同)

Kal*_*vas 7

如果问题是统计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,那么日期不是正确.在那里,这个解决方案是正确的方法,至少为了统计目的.