File tree Expand file tree Collapse file tree 2 files changed +15
-2
lines changed
src/Jenssegers/Mongodb/Eloquent Expand file tree Collapse file tree 2 files changed +15
-2
lines changed Original file line number Diff line number Diff 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 );
Original file line number Diff line number Diff 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 ' ]]);
You can’t perform that action at this time.
0 commit comments