【发布时间】:2011-04-19 19:25:56
【问题描述】:
我了解repr() 的目的是返回一个字符串,该字符串可用于作为python 命令进行评估并返回相同的对象。不幸的是,pytz 似乎对这个函数不太友好,虽然它应该很容易,因为 pytz 实例是通过一次调用创建的:
import datetime, pytz
now = datetime.datetime.now(pytz.timezone('Europe/Berlin'))
repr(now)
返回:
datetime.datetime(2010, 10, 1, 13, 2, 17, 659333, tzinfo=<DstTzInfo 'Europe/Berlin' CEST+2:00:00 DST>)
不能简单地复制到另一个 ipython 窗口并进行评估,因为它会在 tzinfo 属性上返回语法错误。
有没有简单的方法让它打印:
datetime.datetime(2010, 10, 1, 13, 2, 17, 659333, tzinfo=pytz.timezone('Europe/Berlin'))
当'Europe/Berlin' 字符串在repr() 的原始输出中已经清晰可见时?
【问题讨论】:
-
总是
Europe/Berlin还是任意时区? -
可以是任何时区。我想要一个 datetime 对象的 pythonic 表示,我可以在 ipython shell 中复制&粘贴&执行,并获取带有其时区的原始时间戳。所以请不要将全球转换为 UTC。
-
仅供参考:建议
repr可用于复制对象,但这不是必需的。 -
@Daenyth:如果推荐的话,如果这样的通用库的开发者可以使用它就好了。
标签: python instance representation pytz