2015-10-22 6 views
0

Я попытался создать ожидаемое время жизни в течение 2 месяцев с завода. И это мой код:Как создать ожидаемое datetime в odoo?

@api.one 
@api.depends('date_plant','nursery_plandate') 
def calculateplandate(self): 
    fmt = '%Y-%m-%d' 
    if self.date_plant: 
     d1 = self.date_plant 
     conv = datetime.date(d1) 
     d2 = datetime.strptimes(str(conv),fmt) 
     d3 = d2.month 
     hasil = d3+2 
     self.nursery_plandate = hasil 

и моя ошибка:

line 148, in calculateplandate 
d2 = datetime.date(d1) 
TypeError: descriptor 'date' requires a 'datetime.datetime' object but received a 'str' 
+0

Если вы нашли ответ, чем принять его. –

+0

Я нашел свой ответ. –

ответ

1

Причина этой ошибки, вы передаете строку вместо даты к datetime.date(). Когда мы получим данные даты, он будет строковым, вам нужно преобразовать его в тип даты.

Попробуйте этот код: - Я включаю образец кода для добавления 60 дней на заводскую дату. пожалуйста, внесите необходимые изменения в соответствии с вашими потребностями.

def calculateplandate(self): 
    if self.date_plant: 
     start = datetime.strptime(self.date_plant, DEFAULT_SERVER_DATE_FORMAT) 
     conv = datetime.date(d1) 
     hasil = start + datetime.timedelta(days=60) # for adding 60 days 
     self.nursery_plandate = hasil 

Надеюсь, это поможет.

0

спасибо за ваш ответ, я нашел еще один ответ на мой случай, например:

def calculateplandate(self): 
    fmt = '%Y-%m-%d' 
    if self.date_plant: 
     from_date = self.date_plant 
     d1=datetime.strptime(str(from_date),fmt) 
     date_after_month = datetime.date(d1)+ relativedelta(months=1) 
     cetak = date_after_month.strftime(fmt) 
     self.nursery_plandate = cetak 

и я нашел еще один вопрос для моего случая, я не могу получить значение с плавающей точкой в ​​течение нескольких месяцев, например, я получаю значение месяцев за 1,5, я хочу, чтобы ожидаемый день с посаженного дня составлял 1,5 месяца.

0

python datetime - обработка значений даты/времени.

Назначение: Модуль datetime включает функции и классы для обработки синтаксиса даты и времени, форматирования и арифметики.

Доступен В: 2,3, а затем

Используйте класс DATETIME для хранения значений, состоящих из обоих компонентах даты и времени. Как и в случае с датой, существует несколько удобных методов класса для создания экземпляров datetime из других общих значений.

Решение:

@api.one 
@api.depends('date_plant','nursery_plandate') 
def calculateplandate(self): 
    if self.date_plant: 
     d1 = datetime.strptimes(str(self.date_plant),DEFAULT_SERVER_DATE_FORMAT) 
     d2 = d1.month + 2 
     hasil = datetime.date(d1.year, d2, d1.day) 
     self.nursery_plandate = hasil 

Ссылка для питона DateTime:

datetime — Basic date and time types

datetime – Date/time value manipulation

datetime – Date/time value manipulation

1

В odoo 9.0 - fields.Date и fields.Datetime имеют методы from_string() и to_string(). Вы можете использовать их для создания объектов date/datetime, а затем, при необходимости, манипулировать ими.

date = fields.Date.from_string(self.date_plant) 

 Смежные вопросы

  • Нет связанных вопросов^_^