Skip to content

Commit 19ab3d0

Browse files
committed
Use the current timezone when reading an UTCDateTime
1 parent fad16ab commit 19ab3d0

File tree

4 files changed

+13
-10
lines changed

4 files changed

+13
-10
lines changed

Diff for: src/Eloquent/DocumentModel.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ public function getQualifiedKeyName()
100100
}
101101

102102
/**
103-
* Convert a DateTime to a storable UTCDateTime.
103+
* Convert a DateTimeInterface (including Carbon) to a storable UTCDateTime.
104104
*
105105
* @see HasAttributes::fromDateTime()
106106
*
@@ -122,7 +122,7 @@ public function fromDateTime($value): UTCDateTime
122122
}
123123

124124
/**
125-
* Return a timestamp as DateTime object.
125+
* Return a timestamp as Carbon object.
126126
*
127127
* @see HasAttributes::asDateTime()
128128
*

Diff for: src/Query/Builder.php

+8-4
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use Carbon\CarbonPeriod;
1010
use Closure;
1111
use DateTimeInterface;
12+
use DateTimeZone;
1213
use Illuminate\Database\Query\Builder as BaseBuilder;
1314
use Illuminate\Database\Query\Expression;
1415
use Illuminate\Support\Arr;
@@ -40,6 +41,7 @@
4041
use function call_user_func_array;
4142
use function count;
4243
use function ctype_xdigit;
44+
use function date_default_timezone_get;
4345
use function dd;
4446
use function dump;
4547
use function end;
@@ -1662,8 +1664,9 @@ private function aliasIdForResult(array|object $values): array|object
16621664

16631665
foreach ($values as $key => $value) {
16641666
if ($value instanceof UTCDateTime) {
1665-
$values[$key] = Date::instance($value->toDateTime());
1666-
} elseif (is_array($value) || $value instanceof stdClass) {
1667+
$values[$key] = Date::instance($value->toDateTime())
1668+
->setTimezone(new DateTimeZone(date_default_timezone_get()));
1669+
} elseif (is_array($value) || is_object($value)) {
16671670
$values[$key] = $this->aliasIdForResult($value);
16681671
}
16691672
}
@@ -1677,8 +1680,9 @@ private function aliasIdForResult(array|object $values): array|object
16771680

16781681
foreach (get_object_vars($values) as $key => $value) {
16791682
if ($value instanceof UTCDateTime) {
1680-
$values->{$key} = Date::instance($value->toDateTime());
1681-
} elseif (is_array($value) || $value instanceof stdClass) {
1683+
$values->{$key} = Date::instance($value->toDateTime())
1684+
->setTimezone(new DateTimeZone(date_default_timezone_get()));
1685+
} elseif (is_array($value) || is_object($value)) {
16821686
$values->{$key} = $this->aliasIdForResult($value);
16831687
}
16841688
}

Diff for: tests/AuthTest.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44

55
namespace MongoDB\Laravel\Tests;
66

7+
use Carbon\Carbon;
78
use Illuminate\Auth\Passwords\PasswordBroker;
89
use Illuminate\Support\Facades\Auth;
910
use Illuminate\Support\Facades\DB;
1011
use Illuminate\Support\Facades\Hash;
11-
use MongoDB\BSON\UTCDateTime;
1212
use MongoDB\Laravel\Tests\Models\User;
1313

1414
use function bcrypt;
@@ -63,7 +63,7 @@ function ($actualUser, $actualToken) use ($user, &$token) {
6363
$reminder = DB::table('password_reset_tokens')->first();
6464
$this->assertEquals('[email protected]', $reminder->email);
6565
$this->assertNotNull($reminder->token);
66-
$this->assertInstanceOf(UTCDateTime::class, $reminder->created_at);
66+
$this->assertInstanceOf(Carbon::class, $reminder->created_at);
6767

6868
$credentials = [
6969
'email' => '[email protected]',

Diff for: tests/QueueTest.php

+1-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
use Illuminate\Support\Facades\Queue;
1212
use Illuminate\Support\Str;
1313
use Mockery;
14-
use MongoDB\BSON\UTCDateTime;
1514
use MongoDB\Laravel\Queue\MongoJob;
1615
use MongoDB\Laravel\Queue\MongoQueue;
1716

@@ -197,7 +196,7 @@ public function testFailedJobLogging()
197196
$this->assertSame('test_connection', $failedJob->connection);
198197
$this->assertSame('test_queue', $failedJob->queue);
199198
$this->assertSame('test_payload', $failedJob->payload);
200-
$this->assertEquals(new UTCDateTime(Carbon::now()), $failedJob->failed_at);
199+
$this->assertEquals(Carbon::now(), $failedJob->failed_at);
201200
$this->assertStringStartsWith('Exception: test_exception in ', $failedJob->exception);
202201
}
203202
}

0 commit comments

Comments
 (0)