<p>正如pyorient中解释的<a href="https://github.com/mogui/pyorient/issues/176" rel="nofollow">here</a>(序列化.py)日期和日期时间使用本地时间进行编码和解码。这会产生几个问题,如链接中所述,也是问题中描述的问题。在</p>
<p>一个可能的解决办法是改变序列化.py所以一切都被视为UTC。在</p>
<p>在</p>
<pre><code>def _encode_value(self, value):
</code></pre>
<p>添加</p>
^{pr2}$
<p>对于日期时间更改</p>
<pre><code>elif isinstance(value, datetime):
ret = str(int(time.mktime(value.timetuple())) * 1000) + 't'
</code></pre>
<p>到</p>
<pre><code>elif isinstance(value, datetime):
ret = str(int(timegm(value.timetuple())) * 1000) + 't'
</code></pre>
<p>对于日期更改</p>
<pre><code>elif isinstance(value, date):
ret = str(int(time.mktime(value.timetuple())) * 1000) + 'a'
</code></pre>
<p>到</p>
<pre><code>elif isinstance(value, date):
ret = str(int(timegm(value.timetuple())) * 1000) + 'a'
</code></pre>
<p>在</p>
<pre><code>def _parse_number(self, content):
</code></pre>
<p>对于日期更改</p>
<pre><code>if c == 'a':
collected = date.fromtimestamp(float(collected) / 1000)
</code></pre>
<p>到</p>
<pre><code>if c == 'a':
collected = datetime.utcfromtimestamp(float(collected) / 1000).date()
</code></pre>
<p>对于日期时间更改</p>
<pre><code>elif c == 't':
collected = datetime.fromtimestamp(float(collected) / 1000)
</code></pre>
<p>到</p>
<pre><code>elif c == 't':
collected = datetime.utcfromtimestamp(float(collected) / 1000)
</code></pre>