On 20 February 2024 10:05:25 CET, Marc Bennewitz <marc@mabe.berlin> wrote:
>
>On 20.02.24 09:58, Derick Rethans wrote:
>> On 20 February 2024 08:41:19 GMT, Marc Bennewitz<marc@mabe.berlin> wrote:
>>> Hi Hans,
>>>
>>> On 16.02.24 13:05, Hans Henrik Bergan wrote:
>>>> My name is "Hans Henrik Bergan", usually go by the nickname
>>>> "divinity76", I've contributed to OSS (including PHP) for years, and
>>>> am currently involved in 3 things that might require an RFC, and
>>>> requesting RFC karma for wiki account "divinity76".
>>>>
>>>> 3/3: int|float for DateTime::setTimestamp, setTimestamp(0.123456) =>
>>>> 1970-01-01 00:00:00.123456 :https://github.com/php/php-src/pull/13383
>>> Actually I also want to work on this if I find time ... but as this is a BC break I think it makes sense to revisit DateTime (and friends) to bundle BC breaks to a single PHP version - probably PHP 9 and more sure there is a way for users to make it work in PHP (7+)8+9.
>>>
>>> Personal and incomplete list I think needs improvements:
>>>
>>> * allow float for `setTimestamp`
>>> * option to return timestamp as float to simplify passing it to JS
>>> * Missing getter/setter for most of the date/time parts like `get/setSecond`, `get/setHour` etc.
>>> * For now I only added `get/setMicroseconds` together with `createFromTimestamp` because `DateTime::createFromTimestamp(123456789)->setMicroseconds(123987)`
>>> * After thinking about naming - I think this should be renamed to singular 😬
>>> * Add missing methods to DateTimeInterface
>>> * Allow userland implements DateTimeInterface
>>> * Define how `createFromInterface` behaves on userland implementations
>>> * fixing ISO 8601 format
>>> * fixing some return type definitions from self to static
>>> * strict mode
>>> * `DateTime::createFromFormat('Y-m-d', '2023-02-29')`
>>> * `DateTime::createFromFormat('Y-m-d H:i', '2024-03-31 02:30', new DateTimeZone('Europe/Berlin'))`
>>> * Missing current microseconds on `createFromFormat` but other non defined parts needs to be explicitly reset using `|!`
>>> * leap seconds support on UTC TZ
>>> * As of leap seconds ... wouldn't it be better to default to +00:00 instead of UTC ?
>>> * Support nanoseconds
>>>
>>>
>>> I'm for sure not able to work on all these points and that's why I only started very small close to no BC improvements without RFC.
>>>
>> IMO, doing tweaks to this base functionality isn't the way forwards. I've been having on and off conversations with Florian over the last couple of months to see if we can design a better higher level API instead of patching the nits.
>
>Do you mean adding an additional API in C or userland? Is there a way to participate on the discussion?
A bit of both, I suppose. But mainly for a user facing API. I've nothing concrete yet, and will soon start collecting thoughts. I'll make sure to email this list.
cheers
Derick