【发布时间】:2019-08-12 15:21:12
【问题描述】:
我实际上是在尝试制作一个带有“邮票”界面的月度奖励系统。 为此,我想使用一个包含 1 个单元格 = 1 天的 HTML 表格,从星期一开始。
这是我的问题(解决方案可能很容易找到!):星期一不是一个月的第一天 - 至少不是整个月。如何要求 strtotime() 和 date() 显示日期 Y-m-d :
“每月第一周的星期一”?
“每月最后一周的星期日”?
我期待 2019-08 年的结果是这样的:
2019-07-29
2019-09-01
我没有在 PHP 文档中找到它,但是有没有办法在 date() 上放置第三个参数来设置日期?
这样,我可以做这样的事情:
date('Y-m-d', strtotime('monday'), '2019-08-01');
编辑:
根据@Vidal 的回答,这是我尝试过的,但我得到了一个奇怪的 PHP 反应:
$first_date = date("Y-m-d", strtotime("first monday 2019-08 - 7 days"));
$last_date = date("Y-m-d", strtotime("last sunday 2019-09"));
$last_date2 = date("Y-m-d", strtotime("last sunday 2019-09 + 7 days"));
echo $first_date; ?><br>
echo $last_date; ?><br>
echo $last_date2; ?><br>
输出:
2019-07-29
2019-08-25
2019-09-08
我不知道为什么。您是否还注意到我需要将 $last_date & $last_date2 设置为 2019-09 而不是 2019-08 ?
【问题讨论】:
-
毫无意义,7-29 不在 8 月,9-01 不在 8 月。那怎么可能是 08 月? 7-29 是 7 月的最后一个星期一,也恰好是 7 月的最后一周。
-
请看我更新的答案
last sunday of 2019-08 -
此外,如果您想获得每月的下周一和周日,则必须增加 1 个月而不是 7 天。
-
如果您遇到这样的问题,为什么不自己编写某种算法呢?这样做应该不会太难,而且学习一些 TDD 看起来是一个很好的练习
-
@p。 Jerome 我的解决方案对你有用吗?
标签: php