以PHP 4获取当周的星期一

Ben*_*nes 12 php php4 date

我需要在本周找到星期一的日期.我怎么能在PHP 4中做到这一点?

小智 84

最简单的方法:

$time = strtotime('monday this week');
Run Code Online (Sandbox Code Playgroud)

  • 哈!当他们[说](http://php.net/manual/en/function.strtotime.php)"将任何英文文本日期时间描述解析为Unix时间戳"时,他们真正意味着它,不是吗?+1表示最可读的解决方案. (4认同)
  • 我认为"本周一星期一"实际上会给下一个星期一...."上个星期一"对我有用 (2认同)

nic*_*ckf 12

试试这个:

return strtotime('last monday', strtotime('next sunday'));
Run Code Online (Sandbox Code Playgroud)


api*_*s17 10

echo date('Y-m-d',time()+( 1 - date('w'))*24*3600);
Run Code Online (Sandbox Code Playgroud)

下周:

echo date('Y-m-d',time()+( 8 - date('w'))*24*3600);
Run Code Online (Sandbox Code Playgroud)

1周一,2周二,周三3周等.试试.

  • 如果你在星期天试试这个代码,这不会给上周一! (2认同)

mr.*_*r.b 7

echo date('Y-m-d', strtotime('previous monday'));
Run Code Online (Sandbox Code Playgroud)

但是只需要一个注释.你想确保今天不是星期一,否则你会得到上一个星期一的日期,就像它说的那样.你可以这样做

if (date('w') == 1)
{
    // today is monday
}
else
{
    // find last monday
}
Run Code Online (Sandbox Code Playgroud)


Rob*_*Rob 5

$thisMonday = date('l, F d, Y', time() - ((date('w')-1) * 86400) );

编辑:说明

  • date('w') 是星期几的数字表示形式(0 =星期日,6 =星期六)
  • 一天有86400秒
  • 我们采用当前时间,然后减去(一天*(星期几-1))

因此,如果当前是星期三(第3天),则星期一是两天前:

time() - (86400 * (3 - 1)) = time() - 86400 * 2

如果是星期一(第1天),我们得到:

time() - (86400 * (1 - 1))= time() - 86400 * 0=time()

如果是星期天(第0天),则星期一是明天。

time() - (86400 * (0 - 1))= time() - -86400=time() + 86400