odoo 10.0 中的日期添加
Date addition in odoo 10.0
我有一个 class :
class DateAddition(models.Model):
_name = "studentmanagement.dateaddition"
input_date = fields.Date()
output_date = fields.Date()
no_months = fields.Integer()
然后如果我填写 input_date = "26 Feb 2017" 和 no_months = 2,output_date 将是 "26 April 2017"。 on_change 如何在 odoo-10.0 中做到这一点?
我不知道如何将它与您的 odoo
on_change
挂钩,但这里有一个从日期字符串中添加或减去月份的例程:
代码:
import datetime as dt
def add_month(date, months):
assert isinstance(date, dt.date)
year, month, day = date.year, date.month, date.day
year += int((month + months-1) / 12)
month = (month + months - 1) % 12 + 1
return dt.date(year, month, day)
def add_month_from_string(date_string, months):
date = dt.datetime.strptime(date_string, '%d %b %Y')
return add_month(date, months).strftime('%d %b %Y')
测试数据:
test_data = (
("26 Feb 2017", 2, "26 Apr 2017"),
("6 Dec 2016", 3, "6 Mar 2017"),
("26 Feb 2017", -2, "26 Dec 2016"),
)
for have, inc, want in test_data:
print(have, inc, add_month_from_string(have, inc), want)
结果:
('26 Feb 2017', 2, '26 Apr 2017', '26 Apr 2017')
('6 Dec 2016', 3, '06 Mar 2017', '6 Mar 2017')
('26 Feb 2017', -2, '26 Dec 2016', '26 Dec 2016')
我有一个 class :
class DateAddition(models.Model):
_name = "studentmanagement.dateaddition"
input_date = fields.Date()
output_date = fields.Date()
no_months = fields.Integer()
然后如果我填写 input_date = "26 Feb 2017" 和 no_months = 2,output_date 将是 "26 April 2017"。 on_change 如何在 odoo-10.0 中做到这一点?
我不知道如何将它与您的 odoo
on_change
挂钩,但这里有一个从日期字符串中添加或减去月份的例程:
代码:
import datetime as dt
def add_month(date, months):
assert isinstance(date, dt.date)
year, month, day = date.year, date.month, date.day
year += int((month + months-1) / 12)
month = (month + months - 1) % 12 + 1
return dt.date(year, month, day)
def add_month_from_string(date_string, months):
date = dt.datetime.strptime(date_string, '%d %b %Y')
return add_month(date, months).strftime('%d %b %Y')
测试数据:
test_data = (
("26 Feb 2017", 2, "26 Apr 2017"),
("6 Dec 2016", 3, "6 Mar 2017"),
("26 Feb 2017", -2, "26 Dec 2016"),
)
for have, inc, want in test_data:
print(have, inc, add_month_from_string(have, inc), want)
结果:
('26 Feb 2017', 2, '26 Apr 2017', '26 Apr 2017')
('6 Dec 2016', 3, '06 Mar 2017', '6 Mar 2017')
('26 Feb 2017', -2, '26 Dec 2016', '26 Dec 2016')