bob*_*obo 28 python google-app-engine datetime tzinfo
如何设置刚刚从数据存储中发出的日期时间实例的时区?
当它第一次出现时它是UTC.我想把它改成EST.
我正在尝试,例如:
class Book( db.Model ):
creationTime = db.DateTimeProperty()
Run Code Online (Sandbox Code Playgroud)
检索Book时,我想立即设置其tzinfo:
book.creationTime.tzinfo = EST
Run Code Online (Sandbox Code Playgroud)
当我用这个例子我EST对象
但是我得到:
attribute 'tzinfo' of 'datetime.datetime' objects is not writable
我已经看到了一些推荐pytz和python-dateutil的答案,但我真的想要回答这个问题.
Ale*_*lli 51
datetime
对象是不可变的,所以你永远不会改变它们的任何属性 - 你创建一个具有相同属性和新属性的新对象,并将它分配给你需要分配给它的任何东西.
即,在你的情况下,而不是
book.creationTime.tzinfo = EST
Run Code Online (Sandbox Code Playgroud)
你必须编码
book.creationTime = book.creationTime.replace(tzinfo=EST)
Run Code Online (Sandbox Code Playgroud)
如果您收到的是 EST中的日期时间,但没有设置其tzinfo字段,请使用dt.replace(tzinfo=tz)
分配tzinfo而不修改时间.(您的数据库应该为您执行此操作.)
如果您正在接收UDT中的日期时间,并且您希望它在EST中,那么您需要astimezone. http://docs.python.org/library/datetime.html#datetime.datetime.astimezone
在绝大多数情况下,您的数据库应该在UDT中存储和返回数据,您不需要使用replace(除了可能分配UDT tzinfo).
归档时间: |
|
查看次数: |
29779 次 |
最近记录: |