我认为它可能但我不能为它提出正确的算法.
我想做的是:
如果今天是2009年1月2日星期一,我怎么知道上周的星期二?在2天之后使用相同的代码,我会找到上周二的相同日期,当前日期是星期三,2009年2月4日.
我知道已有一个已接受的答案,但是它不符合要求的第二个要求.在上述情况下,如果在周三使用,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,当然你需要额外的努力.
大多数答案要么太多,要么在技术上不正确,因为"上周二"并不一定意味着上周二的星期二,它只是意味着上周二,可能在"现在"的同一周内.
正确答案是:
strtotime('tuesday last week')
PHP实际上使这很容易:
echo strtotime('last Tuesday');
请参阅strtotime
文档.