当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何在PHP中获取上周(周二或任何其他日期)的日期?》经验,为你挑选了3个好方法。

我认为它可能但我不能为它提出正确的算法.

我想做的是:

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



1> cg...:

我知道已有一个已接受的答案,但是它不符合要求的第二个要求.在上述情况下,如果在周三使用,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,当然你需要额外的努力.


由于DST切换,星期日只有23小时,因此每年1周不起作用(产生的时间戳将是星期一23:00).将"7*86400"替换为"7*86400 + 7200".当然,在这种情况下,时间不会总是0:00,但日期将是DST安全的!

2> smo0f..:

大多数答案要么太多,要么在技术上不正确,因为"上周二"并不一定意味着上周二的星期二,它只是意味着上周二,可能在"现在"的同一周内.

正确答案是:

strtotime('tuesday last week')



3> Jack Sleight..:

PHP实际上使这很容易:

echo strtotime('last Tuesday');

请参阅strtotime文档.


这实际上不会给你"上周的星期二"但是最后一个星期二(可能是同一周...如果是星期五)
推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有