Guest User

Untitled

a guest
Oct 16th, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.19 KB | None | 0 0
  1. import datetime, time
  2.  
  3. from ndb import model, tasklets
  4.  
  5. EPOCH = datetime.datetime.utcfromtimestamp(0)
  6. OFFSET = datetime.timedelta(seconds=7 * 60 * 60)  # Offset between PDT and UTC
  7.  
  8. def to_utc(value):
  9.   return value + OFFSET
  10.  
  11. def from_utc(value):
  12.   return value - OFFSET
  13.  
  14. class UtcDateTimeProperty(model.DateTimeProperty):
  15.  
  16.   def _db_set_value(self, v, p, value):
  17.     value = to_utc(value)
  18.     super(UtcDateTimeProperty, self)._db_set_value(v, p, value)
  19.  
  20.   def _db_get_value(self, v, p):
  21.     value = super(UtcDateTimeProperty, self)._db_get_value(v, p)
  22.     value = from_utc(value)
  23.     return value
  24.  
  25. class Record(model.Model):
  26.   utc = UtcDateTimeProperty()
  27.  
  28. def main():
  29.   # Disable caching.
  30.   ctx = tasklets.get_context()
  31.   ctx.set_cache_policy(False)
  32.   ctx.set_memcache_policy(False)
  33.  
  34.   now = datetime.datetime.now()
  35.   print 'now =', now
  36.   r = Record(utc=now)
  37.   print 'r =', r
  38.   r.put()
  39.   print 'r.key =', r.key
  40.   print r._to_pb()
  41.   print 'posix time * 1000000 =', hex(int(time.time() * 1000000))
  42.  
  43.   q = r.key.get()
  44.   assert q is not r  # Actually read from datastore
  45.   print 'q =', q
  46.   print 'q.utc =', q.utc
  47.   assert q.utc == now
  48.  
  49. if __name__ == '__main__':
  50.   main()
Add Comment
Please, Sign In to add comment