2013-02-10 61 views
1

为什么的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的作家的工作?

顺便说一句,如何获得“二月”而不是“二月”?

+0

为什么ORM为date/datetime字段返回这样的字符串?似乎有点不受欢迎。 – 2014-12-10 13:45:48

回答

1

因为o.create_order返回一个字符串而不是日期时间对象,即使在内部数据库列是时间戳。 OpenERP ORM返回ISO 8601格式的字符串。

您需要使用RML报告中提供的formatLang方法,或使用datetime python模块创建datetime对象。

试试这个:

datetime.strftime('%d %B %Y', o.create_order') 
0

这是因为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")

希望这会解决您的问题。