TheRealFalcon commented on a change in pull request #1165: TINKERPOP-2264 Fixed 
g:Date serialization for python.
URL: https://github.com/apache/tinkerpop/pull/1165#discussion_r306417490
 
 

 ##########
 File path: 
gremlin-python/src/main/jython/gremlin_python/structure/io/graphsonV2d0.py
 ##########
 @@ -339,18 +339,17 @@ class DateIO(_GraphSONTypeIO):
     python_type = datetime.datetime
     graphson_type = "g:Date"
     graphson_base_type = "Date"
+    epoch = datetime.datetime(1970, 1, 1)
 
     @classmethod
     def dictify(cls, obj, writer):
-        # Java timestamp expects miliseconds
+        # Java timestamp expects milliseconds.
         if six.PY3:
-            pts = obj.timestamp()
+            pts = (obj - cls.epoch) / datetime.timedelta(seconds=1)
         else:
-            # Hack for legacy Python
-            # timestamp() in Python 3.3
-            pts = time.mktime((obj.year, obj.month, obj.day,
-                                          obj.hour, obj.minute, obj.second,
-                                          -1, -1, -1)) + obj.microsecond / 1e6
+            # Hack for legacy Python - timestamp() in Python 3.3
+            pts = (time.mktime(obj.timetuple()) + obj.microsecond / 1e6) - \
+                  (time.mktime(cls.epoch.timetuple()))
 
 Review comment:
   If I'm understanding this right, it's taking the epoch offset and removing 
it from our current time.
   So for example, `obj.timetuple()` will return current UTC-5 for me, and 
`cls.epoch.timetuple()` should return epoch-5, so we if we subtract them, we 
get the UTC time.
   
   But according to the end of https://stackoverflow.com/a/5499906/37205, the 
epoch offset can be different for DST timezones. I don't really understand how 
that can be, but when I'm not in daylight time, I'm UTC-6. I think this answer 
is saying that if my timezone was affected, it would return epoch as epoch-6 
when current time would be UTC-5.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to