Skip to content

Commit 982fbfa

Browse files
authored
Merge pull request #35 from assoconnect/guillaume_absolute_date_clock
Create a Clock class based on AbsoluteDate
2 parents e6c2cd5 + 9a7d909 commit 982fbfa

3 files changed

Lines changed: 61 additions & 1 deletion

File tree

composer.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@
2727
"assoconnect/php-date": "^2.11",
2828
"doctrine/dbal": "^2.10|^3.0",
2929
"symfony/serializer": "^6.0|^7.0",
30-
"twig/twig": "^3"
30+
"twig/twig": "^3",
31+
"symfony/clock": "^7.3"
3132
},
3233
"config": {
3334
"allow-plugins": {

src/AbsoluteDateClock.php

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace AssoConnect\PHPDateBundle;
6+
7+
use AssoConnect\PHPDate\AbsoluteDate;
8+
use Symfony\Component\Clock\DatePoint;
9+
10+
class AbsoluteDateClock
11+
{
12+
public static function now(\DateTimeZone $timeZone): AbsoluteDate
13+
{
14+
return self::relative('now', $timeZone);
15+
}
16+
17+
/**
18+
* @throws \DateMalformedStringException
19+
*/
20+
public static function relative(string $relative = 'now', \DateTimeZone $timezone = null): AbsoluteDate
21+
{
22+
return AbsoluteDate::createInTimezone($timezone ?? new \DateTimeZone('UTC'), new DatePoint($relative));
23+
}
24+
}

tests/AbsoluteDateClockTest.php

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace AssoConnect\PHPDateBundle\Tests;
6+
7+
use AssoConnect\PHPDateBundle\AbsoluteDateClock;
8+
use PHPUnit\Framework\TestCase;
9+
use Symfony\Component\Clock\Test\ClockSensitiveTrait;
10+
11+
class AbsoluteDateClockTest extends TestCase
12+
{
13+
use ClockSensitiveTrait;
14+
15+
protected function setUp(): void
16+
{
17+
self::mockTime('2025-03-12 10:11:12');
18+
}
19+
20+
public function testNow(): void
21+
{
22+
self::assertEquals(
23+
'2025-03-12',
24+
AbsoluteDateClock::now(new \DateTimeZone('Europe/Paris'))
25+
);
26+
}
27+
28+
public function testRelative(): void
29+
{
30+
self::assertEquals(
31+
'2025-03-11',
32+
AbsoluteDateClock::relative('-1day', new \DateTimeZone('Europe/Paris'))
33+
);
34+
}
35+
}

0 commit comments

Comments
 (0)