1.日期格式化字符串
DATE_FORMAT = "%Y - %m - %d"
2.日期时间格式化字符串
DATETIME_FORMAT = "%Y - %m - %d %H:%M:%S"
3.日期时间格式字符串(包含毫秒)
DATETIME_FORMAT = "%Y - %m - %d %H:%M:%S.%f
4.openerp对象中字段赋值为当前日期(字符串)
fields.date.context_today
fields.date.context_today(self,cr,uid,context=context)
fields.date.today()
5.openerp对象中字段赋值为当前时间(字符串)
fields.datetime.now()
fields.datetime.context_timestamp(cr,uid,datetime.now(),context=context)
6.openerp官方建议默认写法
fields.date.context_today
fields.datetime.now()
7.字符串转日期时间
datetime.datetime.strptime(sale.time,DATE_FORMAT)
8.日期时间转字符串
datetime.datetime.strftime(datetime.date.today(),DATE_FORMAT)
9.python中获取当前日期
datetime.date.today()
10.python中获取当前时间
datetime.datetime.now()
11.根据日期间隔,自动算出天数
#计算日期间隔对应的天数
def _get_number_of_days(self, date_from, date_to):
DATETIME_FORMAT = "%Y-%m-%d %H:%M:%S"
from_dt = datetime.datetime.strptime(date_from, DATETIME_FORMAT)
to_dt = datetime.datetime.strptime(date_to, DATETIME_FORMAT)
timedelta = to_dt - from_dt
diff_day = timedelta.days + float(timedelta.seconds) / 86400
return diff_day
12.设置日期字段
_columns = {
'date_from': fields.datetime(u'起始日期',required=True, readonly=True, states={'draft':[('readonly',False)]}, select=True),
'date_to': fields.datetime(u'结束日期', readonly=True, states={'draft':[('readonly',False)]}),
'days': fields.float(u'天数', digits=(8, 2), readonly=True, states={'draft':[('readonly',False)]}),
}
13.更改起始日期,自动计算天数
def onchange_date_from(self, cr, uid, ids, date_to, date_from):
if (date_from and date_to) and (date_from > date_to):
raise osv.except_osv(_(u'警告!'),_(u'开始日期必须小于结束日期.'))
result = {'value': {}}
# 只有起始日期,没有结束日期
if date_from and not date_to:
date_to_with_delta = datetime.datetime.strptime(date_from, tools.DEFAULT_SERVER_DATETIME_FORMAT) + datetime.timedelta(hours=8)
result['value']['date_to'] = str(date_to_with_delta)
# Compute and update the number of days
if (date_to and date_from) and (date_from <= date_to):
diff_day = self._get_number_of_days(date_from, date_to)
result['value']['days'] = round(math.floor(diff_day))+1
else:
result['value']['days'] = 0
return result
14.更改结束日期,自动算出天数
def onchange_date_to(self, cr, uid, ids, date_to, date_from):
if (date_from and date_to) and (date_from > date_to):
raise osv.except_osv(_(u'警告!'),_(u'开始日期必须小于结束日期.'))
result = {'value': {}}
# Compute and update the number of days
if (date_to and date_from) and (date_from <= date_to):
diff_day = self._get_number_of_days(date_from, date_to)
result['value']['days'] = round(math.floor(diff_day))+1
else:
result['value']['days'] = 0
return result