strtotime() : 'first/last day of last/this/next X" gives unexpected results when X is either week or year
Aperta
@derickr ci sta già lavorando.
Dal 22/9/2025.
Extension: date
Feature
Status: Requires RFC
- Lingua principale
- C
- Stelle
- 40.4k
- Fork
- 8.1k
- Merge medio
- 2g 13h
- PR unite (30g)
- 96
Descrizione
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
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Valutazione
Questa issue non è ancora stata valutata.