How to assign current date to a date field in odoo v8?

半腔热情 提交于 2019-12-06 07:42:21

问题


I wanted to assign the current date to a date field 'start_date' in the following code:

calendar_obj.create(cr,uid,
             {'name' : rec_res.act_ion,
              'user_id' : rec_res.asgnd_to.id,
              'start_date' : lambda *a:datetime.today().strftime('%m-%d-%Y'),
              'stop_date' : rec_res.due_date,
              'allday' : True,
              'partner_ids' : [(6,0, [rec_res.asgnd_to.partner_id.id])]
             },
context=context)

How to set or assign the current date value to the start_date field ?


回答1:


The Date field includes a today() method, just for cases like this:

'start_date': fields.Date.today(),

Of course you need to import fields first:

from openerp import fields



回答2:


import time

'start_date':time.strftime("%d/%m/%Y")



回答3:


python datetime – Date/time value manipulation.

Purpose: The datetime module includes functions and classes for doing date and time parsing, formatting, and arithmetic.

Available In: 2.3 and later

Use the datetime class to hold values consisting of both date and time components. As with date, there are several convenient class methods to make creating datetime instances from other common values.

'start_date' : datetime.datetime.now().strftime('%m-%d-%Y')


import datetime

print 'Now    :', datetime.datetime.now()
print 'Today  :', datetime.datetime.today()
print 'UTC Now:', datetime.datetime.utcnow()

d = datetime.datetime.now()
for attr in [ 'year', 'month', 'day', 'hour', 'minute', 'second', 'microsecond']:
    print attr, ':', getattr(d, attr)

Result:

Now    : 2015-08-14 16:27:51.475070
Today  : 2015-08-14 16:27:51.475462
UTC Now: 2015-08-14 10:57:51.475585
year : 2015
month : 8
day : 14
hour : 16
minute : 27
second : 51
microsecond : 475645

Formatting and Parsing

The default string representation of a datetime object uses the ISO 8601 format (YYYY-MM-DDTHH:MM:SS.mmmmmm). Alternate formats can be generated using strftime(). Similarly, if your input data includes timestamp values parsable with time.strptime(), then datetime.strptime() is a convenient way to convert them to datetime instances.

import datetime

format = "%a %b %d %H:%M:%S %Y"

today = datetime.datetime.today()
print 'ISO     :', today

s = today.strftime(format)
print 'strftime:', s

d = datetime.datetime.strptime(s, format)
print 'strptime:', d.strftime(format)

Result:

ISO     : 2015-08-14 16:32:23.914699
strftime: Fri Aug 14 16:32:23 2015
strptime: Fri Aug 14 16:32:23 2015



回答4:


Try just

'start_date' : '%m-%d-%Y' % datetime.today(),

or

'start_date' : datetime.today().strftime('%m-%d-%Y'),



回答5:


from datetime import datetime

current_date = fields.Date(string='Date',default=datetime.now())

current_date.strftime("%d-%M-%Y") // strftime function use for the Date Format



回答6:


to get only the year check this

year = datetime.now().strftime("%Y")



来源:https://stackoverflow.com/questions/31965470/how-to-assign-current-date-to-a-date-field-in-odoo-v8

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!