Bỏ qua để đến Nội dung
Menu
Câu hỏi này đã bị gắn cờ
7 Trả lời
28111 Lượt xem

Not really sure if its a string already but I'm trying to get the number of the week like this


>>> from datetime import datetime

>>> nweek = datetime.strptime(date_invoice,'%d/%m/%Y').isocalendar()[1]

and the result in odoo is 0, so I'm guessing its because the field "date_invoice" is a field type "date" and this strptime command works with strings, am I doing something wrong?


thanks

Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

Hey Luis Fuentes,

Simply just check with below code :

> type(date_invoice)

1) if its like <type 'str'> then you have to convert it into date format using as below syntax.

> date_inv_dt = datetime.strptime(date_invoice,'%d/%m/%Y')

.....and then for getting week no as below.

date_inv_dt..isocalendar()[1]

2) if its like <type 'datetime.datetime'> then you do not need to convert to date format ,then you can go ahead to get week no. like,

> nweek = date_invoice.isocalendar()[1]

Thanks.

Ảnh đại diện
Huỷ bỏ
Tác giả

I tried your 2nd option with no luck, result in Odoo still 0, not sure where to run the type(date_invoice) command to check the type of field

so far my code looks like this

#-*- coding: utf-8 -*-

from odoo import api, fields, models

from datetime import datetime

class nWeeks(models.Model):

_inherit = 'account.invoice'

nweek = fields.Integer(string='Semana', required=False)

invdate = fields.Date(string='Fecha de vencimiento', readonly=False, related="date_invoice")

@api.multi

def number_of_week(self):

nweek = invdate.isocalendar()[1] #USING THE 2ND OPTION SINCE "invdate" IS A FIELD TYPE "Date"

thanks for any help incoming!

Tác giả

<class 'odoo.fields.Date'>

Câu trả lời hay nhất

nweek = datetime.strptime(str(date_invoice),'%d/%m/%Y').isocalendar()[1]

Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

If you're using Python 3 or Odoo 13, the following code works: date_field.strftime("%U"). You can replace "%U" with a bunch of other things to format the date object properly: https://www.w3schools.com/python/python_datetime.asp

Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

Hey Luis Fuentes,

May be this will Help You,

Using this You can find Day, Month, Year, Week, DayofWeek.

from datetime import datetime, timedelta

date_doen = datetime.date.today()
do_date = datetime.strptime(date_done, "%Y-%m-%d %H:%M:%S")
day = do_date.day
month = str(do_date.month)
year, week, dayofweek = do_date.isocalendar()
Ảnh đại diện
Huỷ bỏ
Tác giả

Do I write this in a "api.multi" function?