Skip to content

DateTimeInterface::format reset week(W) to 01 in last days of year #17304

@RicardoSette

Description

@RicardoSette

Description

The following code:

<?php
date_default_timezone_set('UTC');
$time = 1735516799;//Unix timestamps in seconds from Sunday, 29 December 2024 23:59:59
echo json_encode([
    '$time' => $time,
    'date "Y-m-d H:i:s"' => date('Y-m-d H:i:s', $time),
    'date "Y-m (W)"' => date('Y-m (W)', $time),
    'date "o"' => date('o', $time),
], JSON_PRETTY_PRINT) . PHP_EOL;
$time++;//Unix timestamps in seconds from Monday, 30 December 2024 00:00:00
echo json_encode([
    '$time' => $time,
    'date "Y-m-d H:i:s"' => date('Y-m-d H:i:s', $time),
    'date "Y-m (W)"' => date('Y-m (W)', $time),
    'date "o"' => date('o', $time),
], JSON_PRETTY_PRINT) . PHP_EOL;

Resulted in this output:

{
    "$time": 1735516799,
    "date \"Y-m-d H:i:s\"": "2024-12-29 23:59:59",
    "date \"Y-m (W)\"": "2024-12 (52)",
    "date \"o\"": "2024"
}
{
    "$time": 1735516800,
    "date \"Y-m-d H:i:s\"": "2024-12-30 00:00:00",
    "date \"Y-m (W)\"": "2024-12 (01)",
    "date \"o\"": "2025"
}

But I expected this output instead:

{
    "$time": 1735516799,
    "date \"Y-m-d H:i:s\"": "2024-12-29 23:59:59",
    "date \"Y-m (W)\"": "2024-12 (52)",
    "date \"o\"": "2024"
}
{
    "$time": 1735516800,
    "date \"Y-m-d H:i:s\"": "2024-12-30 00:00:00",
    "date \"Y-m (W)\"": "2024-12 (52)",
    "date \"o\"": "2024"
}

For the Operating System the week remains 52.

% date +"So this is week: %U epoch: %s" && uname -a
So this is week: 52 epoch: 1735572050
FreeBSD php-test 14.1-RELEASE-p5 FreeBSD 14.1-RELEASE-p5 GENERIC amd64

% php -v
PHP 8.2.24 (cli) (built: Oct 31 2024 02:19:49) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.24, Copyright (c) Zend Technologies

The same error occurs in docker Linux (image: hyperf-skeleton):

# date +"So this is week: %U epoch: %s" && uname -a
So this is week: 52 epoch: 1735572065
Linux 379e835bc8d6 5.15.49-linuxkit-pr #1 SMP PREEMPT Thu May 25 07:27:39 UTC 2023 aarch64 Linux

# php -v
PHP 8.3.8 (cli) (built: Jun  6 2024 17:04:22) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.8, Copyright (c) Zend Technologies
    with Zend OPcache v8.3.8, Copyright (c), by Zend Technologies

PHP Version

PHP 8.2.24 and 8.3.8

Operating System

FreeBSD 14.1-RELEASE-p5

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions