Feature: #105549 - Support qualified and unqualified ISO8601 dates in DataHandler
See forge#105549
Description
The
Data API has been extended
to support both qualified and unqualified ISO 8601 date formats, correctly
handling supplied timezone offsets when provided.
- Qualified ISO 8601
- Includes an explicit timezone offset (for example,
1999-or12- 11T10: 09: 00+01: 00 1999-)12- 11T10: 09: 00Z - Unqualified ISO 8601
- Omits timezone offsets, representing
LOCALTIME(for example,1999-)12- 11T10: 09: 00
The
Data now accepts five
different formats:
| Format | Examples | |
|---|---|---|
Unqualified ISO 8601
(LOCALTIME) |
'Y- | 1999- |
| Qualified ISO 8601 |
'Y- |
|
| DateTime objects |
\Date |
|
| SQL-flavored dates (internal use) |
'Y- | 1999- |
| Unix timestamps (internal use) |
'U' | 942315071 |
The ISO 8601 variants and
\Date objects are intended for use
in the public API. The SQL-flavored variant and Unix timestamps are primarily
intended for internal operations such as copy or import processes involving
native
DATETIME and
INT timestamp database fields.
$myDate = new \DateTime('yesterday');
$this->dataHandler->start([
'tx_myextension_mytable' => [
'NEW-1' => [
'pid' => 2,
// Format as LOCALTIME
'mydatefield_1' => $myDate->format('Y-m-d\\TH:i:s'),
// Format with timezone information
// (offsets will be normalized to the persistence timezone format,
// UTC for integer fields, LOCALTIME for native DATETIME fields)
'mydatefield_2' => $myDate->format('c'),
// Pass \DateTimeInterface objects directly
'mydatefield_3' => $myDate,
],
],
]);
Impact
TYPO3 now provides accurate and consistent handling of ISO 8601 dates,
eliminating previous issues related to timezone interpretation and LOCALTIME
representation.