From b064f86b417256ae9b89c4abdb3135505cf76c1a Mon Sep 17 00:00:00 2001 From: Nikola Posa Date: Wed, 9 Nov 2016 19:16:42 +0100 Subject: [PATCH] Fixing date/time formatting in MongoDBFormatter. --- src/Monolog/Formatter/MongoDBFormatter.php | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/Monolog/Formatter/MongoDBFormatter.php b/src/Monolog/Formatter/MongoDBFormatter.php index 78c29761..faf37f96 100644 --- a/src/Monolog/Formatter/MongoDBFormatter.php +++ b/src/Monolog/Formatter/MongoDBFormatter.php @@ -104,7 +104,27 @@ class MongoDBFormatter implements FormatterInterface } protected function formatDate(\DateTimeInterface $value, int $nestingLevel): UTCDateTime + { + if (version_compare(phpversion('mongodb'), '1.1.9', '<=')) { + return $this->legacyGetMongoDbDateTime($value); + } + + return $this->getMongoDbDateTime($value); + } + + final protected function getMongoDbDateTime(\DateTimeInterface $value): UTCDateTime { return new UTCDateTime((string) floor($value->format('U.u') * 1000)); } + + final protected function legacyGetMongoDbDateTime(\DateTimeInterface $value): UTCDateTime + { + $milliseconds = floor($value->format('U.u') * 1000); + + $milliseconds = (PHP_INT_SIZE == 8) //64-bit OS? + ? (int) $milliseconds + : (string) $milliseconds; + + return new UTCDateTime($milliseconds); + } }