的OpenERP 6.1日期时间格式化
问题描述:
o.create_order.strftime("%d %B %Y")
回报没事的时候
time.strftime("%d %B %Y")
返回的日期 “2013年2月10日” ???
o.create_order是根据postgresql的时间戳。 它包含“30/11/2012 09:38:34”在openErp销售订单上看到 - 其他信息选项卡。 当查询数据库时,它被存储为“2012-11-30 08:38:34.272”。 所以我期望看到“2012年11月30日”,但没有取而代之。 我误解了语法?
我测试了这个蟒蛇3.3:
>>> d1=datetime.datetime.today()
>>> print(d1.strftime("%d %B %Y"))
10 february 2013
我如何得到它的OpenOffice的作家的工作?
顺便说一句,如何获得“二月”而不是“二月”?
答
因为o.create_order
返回一个字符串而不是日期时间对象,即使在内部数据库列是时间戳。 OpenERP ORM返回ISO 8601格式的字符串。
您需要使用RML报告中提供的formatLang
方法,或使用datetime
python模块创建datetime
对象。
试试这个:
datetime.strftime('%d %B %Y', o.create_order')
答
这是因为o.create_order
返回一个字符串。所以首先你必须把你的字符串日期转换成datetime格式,然后再把它转换成你想要的任何格式作为字符串。
试试这个:
#将字符串转换为日期时间格式。 dt1 = datetime.strptime(o.create_order,"%Y-%m-%d %H:%M:%S")
#将datetime转换成给定的formate并返回字符串。 dt2 = datetime.strftime(dt,"%d %B %Y")
希望这会解决您的问题。
为什么ORM为date/datetime字段返回这样的字符串?似乎有点不受欢迎。 – 2014-12-10 13:45:48