summaryrefslogtreecommitdiff
path: root/odoo/tools/date_utils.py
diff options
context:
space:
mode:
authorjem-odoo <jem@openerp.com>2019-06-28 12:32:16 +0000
committerjem-odoo <jem@openerp.com>2019-07-04 08:19:08 +0000
commit86f5b6a926d5b0fa5b07ee943f6c84a904c48abd (patch)
tree0c2daf5b75f0406ab24c3e409da022ba28fc4afe /odoo/tools/date_utils.py
parent01c279ced14e9ad23ce191e8c51abffb53d603c6 (diff)
[IMP] tools: get_timedelta helper
This commit introduces a small helper to return a timedelta given a quantity and a time unit (day, hour, month, ...) Task-2024216 closes odoo/odoo#34576 Signed-off-by: Jérome Maes (jem) <jem@openerp.com>
Diffstat (limited to 'odoo/tools/date_utils.py')
-rw-r--r--odoo/tools/date_utils.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/odoo/tools/date_utils.py b/odoo/tools/date_utils.py
index 702913ff04e..c7b6d0800d1 100644
--- a/odoo/tools/date_utils.py
+++ b/odoo/tools/date_utils.py
@@ -80,6 +80,23 @@ def get_fiscal_year(date, day=31, month=12):
return date_from, date_to
+def get_timedelta(qty, granularity):
+ """
+ Helper to get a `relativedelta` object for the given quantity and interval unit.
+ :param qty: the number of unit to apply on the timedelta to return
+ :param granularity: Type of period in string, can be year, quarter, month, week, day or hour.
+
+ """
+ switch = {
+ 'hour': relativedelta(hours=qty),
+ 'day': relativedelta(days=qty),
+ 'week': relativedelta(weeks=qty),
+ 'month': relativedelta(months=qty),
+ 'year': relativedelta(years=qty),
+ }
+ return switch[granularity]
+
+
def start_of(value, granularity):
"""
Get start of a time period from a date or a datetime.
@@ -193,6 +210,7 @@ def json_default(obj):
return fields.Date.to_string(obj)
return ustr(obj)
+
def date_range(start, end, step=relativedelta(months=1)):
"""Date range generator with a step interval.