This is an automated email from the ASF dual-hosted git repository.

isapego pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite-php-thin-client.git

commit 3dbff1d8969eb39b90f44a18e17b089961b63a5f
Author: Pavel Petroshenko <[email protected]>
AuthorDate: Tue Oct 23 13:35:37 2018 +0300

    IGNITE-9951 PHP: Fixes for Date data type
    
    This closes #5043
---
 src/Apache/Ignite/Data/Date.php      | 9 ++++-----
 src/Apache/Ignite/Data/Timestamp.php | 4 +++-
 2 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/src/Apache/Ignite/Data/Date.php b/src/Apache/Ignite/Data/Date.php
index 356cc36..fa5f394 100644
--- a/src/Apache/Ignite/Data/Date.php
+++ b/src/Apache/Ignite/Data/Date.php
@@ -47,7 +47,8 @@ class Date
      */
     public static function fromDateTime(DateTime $dateTime)
     {
-        return new Date($dateTime->getTimestamp() * 1000);
+        $millis = intval($dateTime->format('u') / 1000);
+        return new Date($dateTime->getTimestamp() * 1000 + $millis);
     }
     
     /**
@@ -57,11 +58,9 @@ class Date
      */
     public function toDateTime(): DateTime
     {
-        $dateTime = new DateTime();
-        $dateTime->setTimestamp($this->getSeconds());
-        return $dateTime;
+        return DateTime::createFromFormat('U.u', 
number_format($this->getMillis() / 1000, 6, '.', ''));
     }
-    
+
     /**
      * Returns the date value as number of milliseconds elapsed since January 
1, 1970, 00:00:00 UTC.
      * 
diff --git a/src/Apache/Ignite/Data/Timestamp.php 
b/src/Apache/Ignite/Data/Timestamp.php
index 39ef984..a404d46 100644
--- a/src/Apache/Ignite/Data/Timestamp.php
+++ b/src/Apache/Ignite/Data/Timestamp.php
@@ -49,7 +49,9 @@ class Timestamp extends Date
      */
     public static function fromDateTime(DateTime $dateTime)
     {
-        return new Timestamp($dateTime->getTimestamp() * 1000, 0);
+        $micros = $dateTime->format('u');
+        $millis = intval($micros / 1000);
+        return new Timestamp($dateTime->getTimestamp() * 1000 + $millis, 
($micros % 1000) * 1000);
     }
     
     /**

Reply via email to