1

这里显示了我的 openerp 模型中的出生日期字段

'date_of_birth': fields.date('Date of Birth'),

需要将其默认日期更改为早 25 年。因为用户更容易选择年份。(在 openerp jquery 默认加载当前列表中的 20 年,用户必须有一些时间来选择较早的年份)。

例如:

_defaults = {
'date_of_birth':fields.date.context_today - 25years

请建议我实现这个问题(如果它与 python 功能似乎符合我的要求)

4

3 回答 3

1

查看dateutil 模块- 您必须安装它。它使这种计算变得容易。

>>> import datetime
... from dateutil import relativedelta
... 
... today = datetime.date.today()
... past = today + relativedelta.relativedelta(years=-25)
... print(today, past, sep='\t')
2013-05-05  1988-05-05
于 2013-05-05T14:58:34.807 回答
1

如果您的“出生日期”是一个字符串,那么您可以使用在此处输入链接描述strptime 将其转换为日期时间对象。有了这个对象,使用timedelta模块减去 25 年要容易得多

你不能马上减去 25 年,你必须手动计算多少天。

但最终,它会是这样的:

import datetime

my_date = datetime.datetime.strptime('1 Feb 2013', '%d %b %Y')  # converts the date 1 Feb 2013 into a datetime object
new_date = my_date - datetime.timedelta(days=36000)  # Substracts 36000 days
print(new_date.strftime('%d %b %y'))  # prints: '11 Jul 1914'
于 2013-05-05T14:55:26.327 回答
0

现在它适用于此代码

def _dob(self, cr, uid, context=None):
    today = datetime.date.today()
    past = today + relativedelta.relativedelta(years= -25)
    return past.strftime('%Y-%m-%d')

感谢所有答案

于 2013-05-06T04:19:36.887 回答