如何在php中获取上周(星期二或任何其他日期)的日期?

2022-08-30 21:34:56

我认为这是可能的,但我无法为它提出正确的算法。

我想做的是:

如果今天是2009年2月2日星期一,我怎么知道上周星期二的日期?使用相同的代码2天后,我会找到上周星期二的同一日期,当前日期是星期三,2009年2月4日。


答案 1

这些答案中的大多数要么太多,要么在技术上是不正确的,因为“上周二”并不一定意味着上周的周二,它只是意味着前一个星期二,这可能是在“现在”的同一周内。

正确答案是:

strtotime('tuesday last week')

答案 2

我知道已经有一个公认的答案,但恕我直言,它不符合要求的第二个要求。在上述情况下,如果在星期三使用strtotime,则将在昨天产生。因此,确切地说,您仍然需要检查以下内容:

$tuesday = strtotime('last Tuesday');
// check if we need to go back in time one more week
$tuesday = date('W', $tuesday)==date('W') ? $tuesday-7*86400 : $tuesday;

正如达维尔在他的评论中指出的那样,这是我的一个快速镜头。由于夏令时,上述计算将每年关闭一次。足够好的解决方案是:

$tuesday = date('W', $tuesday)==date('W') ? $tuesday-7*86400+7200 : $tuesday;

如果你需要0:00h的时间,你当然需要一些额外的努力。


推荐