OpenERP 6.1 日期时间格式化
为什么
o.create_order.strftime("%d %B %Y")
在
time.strftime("%d %B %Y")
返回日期“2013年2月10日”时却什么都不返回呢?
o.create_order 是一个时间戳,根据 PostgreSQL 的说法。它在 openErp 销售订单的其他信息标签中显示为“30/11/2012 09:38:34”。在查询数据库时,它存储为“2012-11-30 08:38:34.272”。所以我本来期待看到“2012年11月30日”,但却什么都没有。难道我理解错了语法?
我在 Python 3.3 中测试了这个:
>>> d1=datetime.datetime.today()
>>> print(d1.strftime("%d %B %Y"))
10 february 2013
我该如何在 OpenOffice Writer 中让它工作呢?
顺便问一下,怎么才能显示“February”而不是“february”呢?
2 个回答
0
这是因为 o.create_order
返回的是一个字符串。所以你首先需要把这个字符串格式的日期转换成日期时间格式,然后你可以再把它转换成你想要的任何字符串格式。
试试这个:
#将字符串转换为日期时间格式。
dt1 = datetime.strptime(o.create_order,"%Y-%m-%d %H:%M:%S")
#将日期时间转换为你指定的格式,并返回字符串。
dt2 = datetime.strftime(dt,"%d %B %Y")
希望这能解决你的问题。
1
因为 o.create_order
返回的是一个字符串,而不是日期时间对象,即使在数据库中,这个字段是时间戳。OpenERP 的 ORM 返回的是 ISO 8601 格式的字符串。
你需要使用 formatLang
方法,这个方法可以在 RML 报告中找到,或者使用 Python 的 datetime
模块来创建一个 datetime
对象。
试试这个:
datetime.strftime('%d %B %Y', o.create_order')