strtotime() : 'first/last day of last/this/next X" gives unexpected results when X is either week or year
未关闭
@derickr 已经在做这个了。
开始于 2025年9月22日。
Extension: date
Feature
Status: Requires RFC
- 主要语言
- C
- 星标
- 40.4k
- 派生
- 8.2k
- 平均合并
- 2 天 13 小时
- 30 天内合并 PR
- 96
描述
Description
The following code:
<?php
$map = [
'first day of last week' => '2025-08-25', 'last day of last week' => '2025-08-31',
'first day of last month' => '2025-08-01', 'last day of last month'=> '2025-08-31',
'first day of last year' => '2024-01-01', 'last day of last year' => '2024-12-31',
'first day of this week' => '2025-09-01', 'last day of this week' => '2025-09-07',
'first day of this month' => '2025-09-01', 'last day of this month'=> '2025-09-30',
'first day of this year' => '2025-01-01', 'last day of this year' => '2025-12-31',
'first day of next week' => '2025-09-08', 'last day of next week' => '2025-09-14',
'first day of next month' => '2025-10-01', 'last day of next month'=> '2025-10-31',
'first day of next year' => '2026-01-01', 'last day of next year' => '2026-12-31',
];
$time = strtotime($s = 'today');
echo $s . "\t:\t" . date('Y-m-d H:i:s',$time) . PHP_EOL;
echo PHP_EOL;
echo "string\t\t\tresult" . PHP_EOL;
foreach ($map as $string => $date) {
$time = strtotime($s = $string);
echo $s . "\t" . ($d = date('Y-m-d',$time)) . "\t" . PHP_EOL;
}
<?php
Resulted in this output:
today : 2025-09-03 00:00:00
string result
first day of last week 2025-09-01
last day of last week 2025-09-30
first day of last month 2025-08-01
last day of last month 2025-08-31
first day of last year 2024-09-01
last day of last year 2024-09-30
first day of this week 2025-09-01
last day of this week 2025-09-30
first day of this month 2025-09-01
last day of this month 2025-09-30
first day of this year 2025-09-01
last day of this year 2025-09-30
first day of next week 2025-09-01
last day of next week 2025-09-30
first day of next month 2025-10-01
last day of next month 2025-10-31
first day of next year 2026-09-01
last day of next year 2026-09-30
But I expected this output instead:
today : 2025-09-03 00:00:00
string result
first day of last week 2025-08-25
last day of last week 2025-08-31
first day of last month 2025-08-01
last day of last month 2025-08-31
first day of last year 2024-01-01
last day of last year 2024-12-31
first day of this week 2025-09-01
last day of this week 2025-09-07
first day of this month 2025-09-01
last day of this month 2025-09-30
first day of this year 2025-01-01
last day of this year 2025-12-31
first day of next week 2025-09-08
last day of next week 2025-09-14
first day of next month 2025-10-01
last day of next month 2025-10-31
first day of next year 2026-01-01
last day of next year 2026-12-31
PHP Version
PHP 8.4.10
Operating System
No response
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
评估
这个 Issue 还没有评估数据。