Hoppa till innehåll
Odoo Meny
  • Logga in
  • Prova gratis
  • Appar
    Ekonomi
    • Bokföring
    • Fakturering
    • Utgifter
    • Kalkylark (Affärsanalyser)
    • Dokument
    • Underskrifter
    Försäljning
    • CRM
    • Försäljning
    • Kassasystem Butik
    • Kassasystem Restaurang
    • Prenumerationer
    • Uthyrning
    Hemsida
    • Hemsidesverktyg
    • E-handel
    • Blogg
    • Forum
    • Livechatt
    • Utbildning
    Försörjningskedja
    • Lager
    • Produktion
    • Produktens livscykel (PLM)
    • Inköp
    • Underhåll
    • Kvalitet
    HR
    • Anställda
    • Rekrytering
    • Ledighet
    • Utvärderingar
    • Rekommendationer
    • Fordon
    Marknadsföring
    • Sociala medier
    • E-postmarknadsföring
    • Sms-marknadsföring
    • Evenemang
    • Automatiserad marknadsföring
    • Enkäter
    Tjänster
    • Projekt
    • Tidrapporter
    • Fältservice
    • Kundtjänst
    • Planering
    • Tidsbokningar
    Produktivitet
    • Diskutera
    • AI
    • IoT
    • VoIP
    • Kunskap
    • WhatsApp
    Community-appar Odoo Studio Odoo Cloud
  • Branscher
    Butiker
    • Bokaffärer
    • Klädbutiker
    • Möbelaffärer
    • Mataffärer
    • Byggvaruhus
    • Leksaksaffärer
    Restaurang & Hotell
    • Barer och pubar
    • Restauranger
    • Snabbmatsrestauranger
    • Gästhus
    • Dryckesdistributörer
    • Hotell
    Fastigheter
    • Fastighetsbyråer
    • Arkitektfirmor
    • Byggföretag
    • Fastighetsägare
    • Trädgårdsmästare
    • Bostadsrättsföreningar
    Hitta en konsult
    • Redovisningsbyrå
    • Odoo Partner
    • Reklambyråer
    • Advokatbyråer
    • Rekrytering
    • Revisioner och certifieringar
    Produktion
    • Textilproduktion
    • Metallproduktion
    • Möbelproduktion
    • Livsmedelsproduktion
    • Bryggerier
    • Företagsgåvor
    Hälsa och fitness
    • Sportklubbar
    • Optiker
    • Träningscenter
    • Friskvård
    • Apotek
    • Frisörsalonger
    Hantverk
    • Hantverkare
    • IT-utrustning och kundtjänst
    • Solceller, solpaneler och solenergi
    • Skomakare
    • Städföretag
    • VVS-tjänster
    Övrigt
    • Ideella föreningar
    • Miljöförvaltningar
    • Uthyrning av reklamtavlor
    • Fotografer
    • Cykeluthyrning
    • Återförsäljare av mjukvara
    Upptäck alla Branscher
  • Community
    Utbildning
    • Instruktionsvideor
    • Dokumentation
    • Certifiering
    • Utbildningar
    • Blogg
    • Podcast
    Lär dig med oss
    • Workshops
    • Företagsspelet Scale Up!
    • Studiebesök hos Odoo
    Mjukvaran
    • Ladda ner
    • Jämför utgåvor
    • Versionsinformation
    Samverkan
    • GitHub
    • Forum
    • Evenemang
    • Översättningar
    • Bli en partner
    • Partnertjänster
    • Registrera din redovisningsbyrå
    Våra tjänster
    • Partners
    • Revisorer
    • Träffa en rådgivare
    • Implementering
    • Kundrecensioner
    • Kundtjänst
    • Uppgraderingar
    GitHub Youtube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    Boka en demo
  • Priser
  • Hjälp
Du måste vara registrerad för att kunna interagera med communityn.
Alla inlägg Personer Utmärkelser
Etiketter (Visa alla)
odoo accounting v14 pos v15
Om detta forum
Du måste vara registrerad för att kunna interagera med communityn.
Alla inlägg Personer Utmärkelser
Etiketter (Visa alla)
odoo accounting v14 pos v15
Om detta forum
Hjälp

How can I calculate difference between two dates ?

Prenumerera

Få ett meddelande när det finns aktivitet på detta inlägg

Denna fråga har flaggats
datefielddifference
3 Svar
28875 Vyer
Avatar
yassin

I need to calculate the difference between two dates : 

py :

start_date = field.Date()

end_date = field.Date()

xml :

<field name="start_date"/>

<field name="end_date"/>



0
Avatar
Avbryt
Avatar
Avinash Nk
Bästa svar

Hello Yassin,

Try something like this from your python file.

You can call the function in different ways.

Check an example from Button Click.

from datetime import datetime


class YourClass(models.Model):
_inherit = 'your.model'

@api.multi
def your_function(self):
fmt = '%Y-%m-%d'
start_date = self.start_date
end_date = self.end_date
d1 = datetime.strptime(start_date, fmt)
d2 = datetime.strptime(end_date, fmt)
date_difference = d2 - d1


Thanks & Regards

Avinash N K

0
Avatar
Avbryt
yassin
Författare

hi Avinash, thanks for your answer

I try to call the function in a compute filds and display the result but it doesn't work this is my code, it dispays 0 :

...

class EcoStage(models.Model):

name =eco.stage

start_date = fields.Date()

end_date = fields.Date()

duree_stage = fields.Integer(string="duree stage", compute='difference_date', store=True)

@api.multi

def difference_date(self):

fmt = '%Y-%m-%d'

start_date = self.start_date

end_date = self.end_date

d1 = datetime.strptime(start_date, fmt)

d2 = datetime.strptime(end_date, fmt)

date_difference = d2 - d1

in xml :

<fields name="duree_stage "/>

Avinash Nk

Add the 2 fields in the dependency.

---> @api.depends('start_date', 'end_date')

Avinash Nk

Also d2-d1 not gives an integer value.

So do like this. (d2 - d1).days

Avinash Nk

And assign the difference value in the computed field.

Like this. self.duree_stage = (d2 - d1).days

yassin
Författare

thanks a lot Avinash

Avatar
Kamrul Islam Shahin
Bästa svar

It can be done easily in odoo 14:

start_date = fields.Date(string="Start date")
end_date = fields.Date(string="End date")
date_diff = fields.Char("Date difference")

@api.constrains('start_date', 'end_date', 'date_diff')
def _date_difference(self):
for record in self:
if record.start_date > record.end_date:
raise ValidationError('Start date should not greater than end date.')
else:
record.date_diff = (record.end_date - record.start_date).days



2
Avatar
Avbryt
Avatar
yassin
Författare Bästa svar

finally it works 

thanks a lot Avinash you save my life

this is the entier final code :

in .py:

...

class EcoStage(models.Model):

_name ='eco.stage'

start_date = fields.Date()

end_date = fields.Date()

duree_stage = fields.Integer(string="duree stage", compute='difference_date', store=True)

@api.multi

@api.depends('  start_date ',' end_date ')

def difference_date(self):

fmt = '%Y-%m-%d'

start_date = self.start_date

end_date = self.end_date

d1 = datetime.strptime(start_date, fmt)

d2 = datetime.strptime(end_date, fmt)

if d2 >d1 :

self.  duree_stage = (d2 - d1).days

else :

raise ValueError('end date should be superior than start day')

...

in xml :

<fields name="duree_stage "/>


0
Avatar
Avbryt
Njuter du av diskussionen? Läs inte bara, delta också!

Skapa ett konto idag för att ta del av exklusiva funktioner och engagera dig i vår fantastiska community!

Registrera dig
Relaterade inlägg Svar Vyer Verksamhet
HOW TO GET MONTH AS TEXT
date field v15
Avatar
Avatar
1
nov. 22
5208
how to customize year range in date field? Löst
date widget field
Avatar
Avatar
1
aug. 15
7291
Year only needed - how to implement? Löst
fields date field
Avatar
Avatar
Avatar
2
mars 15
5277
Put automatically the date of today in a field Löst
date field automatically today
Avatar
Avatar
Avatar
4
juli 24
34944
Calculating with fields without module changes
xml date field openerp
Avatar
Avatar
Avatar
2
mars 15
8096
Community
  • Instruktionsvideor
  • Dokumentation
  • Forum
Öppen källkod
  • Ladda ner
  • GitHub
  • Runbot
  • Översättningar
Tjänster
  • Odoo.sh Hosting
  • Kundtjänst
  • Uppgradera
  • Anpassningsbara modifikationer
  • Utbildning
  • Revisorer
  • Partners
  • Bli en partner
Om oss
  • Vårt företag
  • Varumärkestillgångar
  • Kontakta oss
  • Jobb
  • Evenemang
  • Podcast
  • Blogg
  • Kunder
  • Juridiskt • Integritet
  • Säkerhet
الْعَرَبيّة Català 简体中文 繁體中文 (台灣) Čeština Dansk Nederlands English Suomi Français Deutsch हिंदी Bahasa Indonesia Italiano 日本語 한국어 (KR) Lietuvių kalba Język polski Português (BR) română русский язык Slovenský jazyk Slovenščina Español (América Latina) Español Svenska ภาษาไทย Türkçe українська Tiếng Việt

Odoo är ett affärssystem med öppen källkod som täcker alla dina företagsbehov: CRM, e-handel, bokföring, lager, kassasystem, projektledning, och så vidare.

Odoos unika värdeförslag är att samtidigt vara väldigt enkel att använda men också helt integrerad.

Website made with

Odoo Experience on YouTube

1. Use the live chat to ask your questions.
2. The operator answers within a few minutes.

Live support on Youtube
Watch now