擅长:python、mysql、java
<p>为了尽可能简单地使用它,有两个步骤:将timedelta转换为int或float,并将其存储在数据存储中。首先,将时间增量转换为微时间:</p>
<pre><code>def timedelta_to_microtime(td):
return td.microseconds + (td.seconds + td.days * 86400) * 1000000
</code></pre>
<p>不过,您不必自己进行转换—您可以定义自定义数据存储属性,该属性允许您将时间增量直接存储到模型:</p>
<pre><code>class TimeDeltaProperty(db.Property):
def get_value_for_datastore(self, model_instance):
value = self.__get__(model_instance, model_instance.__class__)
if value is not None:
return timedelta_to_microtime(value)
def make_value_from_datastore(self, value):
if value is not None:
return datetime.timedelta(microseconds=value)
</code></pre>
<p>现在您可以像使用任何其他属性一样使用此属性:</p>
<pre><code>class MyModel(db.Model):
td = TimeDeltaProperty(required=True)
entity = MyModel(td=datetime.datetime.now()-some_datetime)
key = entity.put()
entity = db.get(key)
print entity.td
</code></pre>