Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
L
laravel-mongodb
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
sinan
laravel-mongodb
Commits
736415ef
Unverified
Commit
736415ef
authored
Apr 23, 2020
by
Stas
Committed by
GitHub
Apr 23, 2020
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #2028 from DoSomething/millisecond-date-bug
Fix issue parsing millisecond-precision dates before 1970.
parents
3d58b4b3
2f926542
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
15 additions
and
1 deletion
+15
-1
Model.php
src/Jenssegers/Mongodb/Eloquent/Model.php
+7
-1
ModelTest.php
tests/ModelTest.php
+8
-0
No files found.
src/Jenssegers/Mongodb/Eloquent/Model.php
View file @
736415ef
...
...
@@ -99,7 +99,13 @@ abstract class Model extends BaseModel
{
// Convert UTCDateTime instances.
if
(
$value
instanceof
UTCDateTime
)
{
return
Date
::
createFromTimestampMs
(
$value
->
toDateTime
()
->
format
(
'Uv'
));
$date
=
$value
->
toDateTime
();
$seconds
=
$date
->
format
(
'U'
);
$milliseconds
=
abs
(
$date
->
format
(
'v'
));
$timestampMs
=
sprintf
(
'%d%03d'
,
$seconds
,
$milliseconds
);
return
Date
::
createFromTimestampMs
(
$timestampMs
);
}
return
parent
::
asDateTime
(
$value
);
...
...
tests/ModelTest.php
View file @
736415ef
...
...
@@ -425,6 +425,14 @@ class ModelTest extends TestCase
$user
=
User
::
create
([
'name'
=>
'Jane Doe'
,
'birthday'
=>
'2005-08-08'
]);
$this
->
assertInstanceOf
(
Carbon
::
class
,
$user
->
birthday
);
// test millisecond-precision dates after 1970:
$user
=
User
::
create
([
'name'
=>
'Jane Doe'
,
'birthday'
=>
new
DateTime
(
'2010-08-08 04.08.37.324'
)]);
$this
->
assertInstanceOf
(
Carbon
::
class
,
$user
->
birthday
);
// test millisecond-precision dates before 1970:
$user
=
User
::
create
([
'name'
=>
'Jane Doe'
,
'birthday'
=>
new
DateTime
(
'1965-08-08 04.08.37.324'
)]);
$this
->
assertInstanceOf
(
Carbon
::
class
,
$user
->
birthday
);
$user
=
User
::
create
([
'name'
=>
'Jane Doe'
,
'entry'
=>
[
'date'
=>
'2005-08-08'
]]);
$this
->
assertInstanceOf
(
Carbon
::
class
,
$user
->
getAttribute
(
'entry.date'
));
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment