Odoo 计算字段 Year from date_invoice
Odoo computed field Year from date_invoice
如何从日期字段 (x_date_invoice) 中仅提取年份到新计算的 odoo 字段,例如 x_jaar
我正在使用 Odoo 10。
fields.Datetime 和 fields.Date 存储为字符串,是否必须解析为 python 日期时间。然后就可以提取年份了。
datetime.strptime(your_datetime, your_datetime_format).year
你好 Pelingier,
Python、
的基本功能
strptime()
描述
strptime() 方法根据格式解析表示时间的字符串。 return 值是 struct_time,由 gmtime() 或 localtime() 编辑 return。
格式参数使用与 strftime() 使用的指令相同的指令;它默认为 "%a %b %d %H:%M:%S %Y" 匹配格式 return 由 ctime() 编辑。
如果string不能按格式解析,或者解析后有多余的数据,会抛出ValueError。
语法
以下是 strptime() 方法的语法:
time.strptime(string[, format])
参数
string -- 这是将根据给定格式解析的字符串格式的时间。
format -- 这是用于解析给定字符串的指令。
strftime()
描述
方法 strftime() 将元组或 struct_time 表示由 gmtime() 或 localtime() 编辑的 return 时间转换为由格式参数指定的字符串。
如果未提供 t,则使用由 localtime() return编辑的当前时间。格式必须是一个字符串。如果 t 中的任何字段超出允许范围,则会引发异常 ValueError。
语法
以下是 strftime() 方法的语法:
time.strftime(format[, t])
参数
t -- 这是要格式化的时间(以秒为单位)。
format -- 这是用于格式化给定时间的指令。以下指令可以嵌入格式字符串中:
============================================= =============================
你的问题解答
使用 DateTime 的所有功能后,第一个导入库来自 datetime import datetime
。
试试下面的代码,
for record in self:
record['x_jaar'] = str(datetime.strptime(record['x_date_invoice'],"%d/%m/%Y %H:%M:%S").strftime("%Y"))
希望我的回答对您有所帮助。
如有任何疑问请留言。
在 odoo 中,使用
导入日期时间
import datetime
不是通常的方式:
from datetime import datetime
也就是说,您应该使用此代码:
str(datetime.datetime.strptime(record['x_date_invoice'],"%Y-%m-%d %H:%M:%S").strftime("%Y"))
date_invoice
字段值是一个字符串,要获取年份,您需要使用例如在评估上下文中可用的 datetime
来解析它。
您可以查看 Compute
字段后 How to define a computed field
部分下的帮助
The only predefined variables are
self
(the set of records to compute)
datetime
(Python module)
dateutil
(Python module)
time
(Python module)
Other features are accessible through self
, like self.env
, etc.
示例:
for record in self:
record['x_jaar'] = datetime.datetime.strptime(record.date_invoice, "%Y-%m-%d").year
由于 Odoo 12 日期和日期时间是对象,要获取年份只需使用 year
属性:
示例:
for record in self:
if record.date_invoice:
record['x_jaar'] = record.date_invoice.year
作为 python 的新手,不得不尝试此处提到的所有建议,但无法使其发挥作用。经过几次试验和错误,在 odoo 14 中,下面的代码对我有用(在计算字段部分)- 希望这对某人有所帮助。
自我记录:
记录['x_studio_maand'] = record.x_studio_date_start.strftime("%B %Y")
#从日期时间字段中获取月份和年份
如何从日期字段 (x_date_invoice) 中仅提取年份到新计算的 odoo 字段,例如 x_jaar
我正在使用 Odoo 10。
fields.Datetime 和 fields.Date 存储为字符串,是否必须解析为 python 日期时间。然后就可以提取年份了。
datetime.strptime(your_datetime, your_datetime_format).year
你好 Pelingier,
Python、
的基本功能strptime()
描述 strptime() 方法根据格式解析表示时间的字符串。 return 值是 struct_time,由 gmtime() 或 localtime() 编辑 return。
格式参数使用与 strftime() 使用的指令相同的指令;它默认为 "%a %b %d %H:%M:%S %Y" 匹配格式 return 由 ctime() 编辑。
如果string不能按格式解析,或者解析后有多余的数据,会抛出ValueError。
语法
以下是 strptime() 方法的语法:
time.strptime(string[, format])
参数
string -- 这是将根据给定格式解析的字符串格式的时间。
format -- 这是用于解析给定字符串的指令。
strftime()
描述 方法 strftime() 将元组或 struct_time 表示由 gmtime() 或 localtime() 编辑的 return 时间转换为由格式参数指定的字符串。
如果未提供 t,则使用由 localtime() return编辑的当前时间。格式必须是一个字符串。如果 t 中的任何字段超出允许范围,则会引发异常 ValueError。
语法
以下是 strftime() 方法的语法:
time.strftime(format[, t])
参数
t -- 这是要格式化的时间(以秒为单位)。
format -- 这是用于格式化给定时间的指令。以下指令可以嵌入格式字符串中:
============================================= =============================
你的问题解答
使用 DateTime 的所有功能后,第一个导入库来自 datetime import datetime
。
试试下面的代码,
for record in self:
record['x_jaar'] = str(datetime.strptime(record['x_date_invoice'],"%d/%m/%Y %H:%M:%S").strftime("%Y"))
希望我的回答对您有所帮助。
如有任何疑问请留言。
在 odoo 中,使用
导入日期时间import datetime
不是通常的方式:
from datetime import datetime
也就是说,您应该使用此代码:
str(datetime.datetime.strptime(record['x_date_invoice'],"%Y-%m-%d %H:%M:%S").strftime("%Y"))
date_invoice
字段值是一个字符串,要获取年份,您需要使用例如在评估上下文中可用的 datetime
来解析它。
您可以查看 Compute
字段后 How to define a computed field
部分下的帮助
The only predefined variables are
self
(the set of records to compute)
datetime
(Python module)
dateutil
(Python module)
time
(Python module)
Other features are accessible throughself
, likeself.env
, etc.
示例:
for record in self:
record['x_jaar'] = datetime.datetime.strptime(record.date_invoice, "%Y-%m-%d").year
由于 Odoo 12 日期和日期时间是对象,要获取年份只需使用 year
属性:
示例:
for record in self:
if record.date_invoice:
record['x_jaar'] = record.date_invoice.year
作为 python 的新手,不得不尝试此处提到的所有建议,但无法使其发挥作用。经过几次试验和错误,在 odoo 14 中,下面的代码对我有用(在计算字段部分)- 希望这对某人有所帮助。
自我记录: 记录['x_studio_maand'] = record.x_studio_date_start.strftime("%B %Y") #从日期时间字段中获取月份和年份