如何使用Python进行日期演绎?

时间:2013-05-05 14:37:59

标签: python xml openerp

此处显示我的openerp模型中的出生日期字段

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

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

代表:

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

请建议我实现这个问题(如果它的python函数似乎对我的要求有好处)

3 个答案:

答案 0 :(得分:1)

如果您的'出生日期'是一个字符串,那么您可以使用enter link description here 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'

答案 1 :(得分:1)

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

>>> 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

答案 2 :(得分:0)

现在它可以使用此代码

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

感谢所有答案