Skip to content

Commit 44825e7

Browse files
author
Giacomo Fabbian
authored
Merge branch 'master' into add_test_for_negative_dates
2 parents eeb6f26 + 736415e commit 44825e7

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

src/Jenssegers/Mongodb/Eloquent/Model.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,13 @@ protected function asDateTime($value)
9999
{
100100
// Convert UTCDateTime instances.
101101
if ($value instanceof UTCDateTime) {
102-
return Date::createFromTimestampMs($value->toDateTime()->format('Uv'));
102+
$date = $value->toDateTime();
103+
104+
$seconds = $date->format('U');
105+
$milliseconds = abs($date->format('v'));
106+
$timestampMs = sprintf('%d%03d', $seconds, $milliseconds);
107+
108+
return Date::createFromTimestampMs($timestampMs);
103109
}
104110

105111
return parent::asDateTime($value);

tests/ModelTest.php

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -424,9 +424,16 @@ public function testDates(): void
424424

425425
$user = User::create(['name' => 'Jane Doe', 'birthday' => '2005-08-08']);
426426
$this->assertInstanceOf(Carbon::class, $user->birthday);
427-
428427
// test negative dates
429428
$user = User::create(['name' => 'Jane Doe', 'birthday' => '1965-08-08']);
429+
430+
// test millisecond-precision dates after 1970:
431+
$user = User::create(['name' => 'Jane Doe', 'birthday' => new DateTime('2010-08-08 04.08.37.324')]);
432+
$this->assertInstanceOf(Carbon::class, $user->birthday);
433+
434+
// test millisecond-precision dates before 1970:
435+
$user = User::create(['name' => 'Jane Doe', 'birthday' => new DateTime('1965-08-08 04.08.37.324')]);
436+
430437
$this->assertInstanceOf(Carbon::class, $user->birthday);
431438

432439
$user = User::create(['name' => 'Jane Doe', 'entry' => ['date' => '2005-08-08']]);

0 commit comments

Comments
 (0)