PHP code example of petrknap / zoned-datetime-persistence
1. Go to this page and download the library: Download petrknap/zoned-datetime-persistence library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
petrknap / zoned-datetime-persistence example snippets
namespace PetrKnap\Persistence\ZonedDateTime;
$em = DoctrineTest::prepareEntityManager();
# persist entity
$em->persist(new Some\Note(
createdAt: new \DateTimeImmutable('2025-10-30 23:52'),
content: "It's dark outside...",
));
$em->flush();
# insert data manually (static call)
$now = new \DateTimeImmutable('2025-10-26 02:45', new \DateTimeZone('CEST'));
$em->getConnection()->insert('notes', [
'created_at__utc' => ZonedDateTimePersistence::computeUtcDateTime($now)->format('Y-m-d H:i:s'),
'created_at__local' => $now->format('Y-m-d H:i:s'),
'content' => 'We still have summer time',
]);
# insert data manually (object instance)
$now = new UtcWithLocal(new \DateTimeImmutable('2025-10-26 02:15', new \DateTimeZone('CET')));
$em->getConnection()->insert('notes', [
'created_at__utc' => $now->getUtcDateTime('Y-m-d H:i:s'),
'created_at__local' => $now->getLocalDateTime('Y-m-d H:i:s'),
'content' => 'Now we have winter time',
]);
# select entities
$notes = $em->createQueryBuilder()
->select('note')
->from(Some\Note::class, 'note')
->where('note.createdAt.local BETWEEN :from AND :to')
->orderBy('note.createdAt.utc')
->getQuery()
->execute(['from' => '2025-10-26 00:00', 'to' => '2025-10-26 23:59']);
foreach($notes as $note) {
echo $note->getCreatedAt()->format('Y-m-d H:i T') . ': '. $note->getContent() . PHP_EOL;
}
namespace PetrKnap\Persistence\ZonedDateTime;
$now = (new \DateTime('2025-03-30 01:45', new \DateTimeZone('Europe/Prague')));
echo 'UtcWithTimezone: ' . (new UtcWithTimezone($now))
->toZonedDateTime()
->modify('+1 hour')
->format('Y-m-d H:i T' . PHP_EOL);
echo 'UtcWithLocal: ' . (new UtcWithLocal($now))
->toZonedDateTime()
->modify('+1 hour')
->format('Y-m-d H:i T' . PHP_EOL);
UtcWithTimezone: 2025-03-30 03:45 CEST
UtcWithLocal: 2025-03-30 02:45 GMT+0100
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.