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 日”,但什么也得不到。我误解了语法吗?

我从 python 3.3 测试了这个:

>>> d1=datetime.datetime.today()
>>> print(d1.strftime("%d %B %Y"))
10 february 2013 

如何让它在 OpenOffice Writer 中工作?

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

4

2 回答 2

1

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

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

尝试这个:

datetime.strftime('%d %B %Y', o.create_order')
于 2013-02-10T20:56:22.540 回答
0

这是因为o.create_order返回一个字符串。因此,首先您必须将字符串日期转换为日期时间格式,然后再将其转换为您想要的任何字符串格式。

尝试这个:

#将字符串转换为日期时间格式。 dt1 = datetime.strptime(o.create_order,"%Y-%m-%d %H:%M:%S")

#将日期时间转换为给定的格式并返回字符串。 dt2 = datetime.strftime(dt,"%d %B %Y")

希望这能解决您的问题。

于 2013-02-11T04:31:41.277 回答