aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/python/python-dateutil/py3/dateutil/utils.py
diff options
context:
space:
mode:
authorshadchin <shadchin@yandex-team.com>2023-10-10 11:35:31 +0300
committershadchin <shadchin@yandex-team.com>2023-10-10 11:54:48 +0300
commit656bb1fb2814e586db5de6166ebbb17363d5325b (patch)
tree31b755ba74120fea597c6d00ce9ff1d0ca7b728a /contrib/python/python-dateutil/py3/dateutil/utils.py
parent3896b7591b5f3231ceb4bfe69cf9863b237d8b78 (diff)
downloadydb-656bb1fb2814e586db5de6166ebbb17363d5325b.tar.gz
Split python-dateutil on py2/py3
Diffstat (limited to 'contrib/python/python-dateutil/py3/dateutil/utils.py')
-rw-r--r--contrib/python/python-dateutil/py3/dateutil/utils.py71
1 files changed, 71 insertions, 0 deletions
diff --git a/contrib/python/python-dateutil/py3/dateutil/utils.py b/contrib/python/python-dateutil/py3/dateutil/utils.py
new file mode 100644
index 0000000000..dd2d245a0b
--- /dev/null
+++ b/contrib/python/python-dateutil/py3/dateutil/utils.py
@@ -0,0 +1,71 @@
+# -*- coding: utf-8 -*-
+"""
+This module offers general convenience and utility functions for dealing with
+datetimes.
+
+.. versionadded:: 2.7.0
+"""
+from __future__ import unicode_literals
+
+from datetime import datetime, time
+
+
+def today(tzinfo=None):
+ """
+ Returns a :py:class:`datetime` representing the current day at midnight
+
+ :param tzinfo:
+ The time zone to attach (also used to determine the current day).
+
+ :return:
+ A :py:class:`datetime.datetime` object representing the current day
+ at midnight.
+ """
+
+ dt = datetime.now(tzinfo)
+ return datetime.combine(dt.date(), time(0, tzinfo=tzinfo))
+
+
+def default_tzinfo(dt, tzinfo):
+ """
+ Sets the ``tzinfo`` parameter on naive datetimes only
+
+ This is useful for example when you are provided a datetime that may have
+ either an implicit or explicit time zone, such as when parsing a time zone
+ string.
+
+ .. doctest::
+
+ >>> from dateutil.tz import tzoffset
+ >>> from dateutil.parser import parse
+ >>> from dateutil.utils import default_tzinfo
+ >>> dflt_tz = tzoffset("EST", -18000)
+ >>> print(default_tzinfo(parse('2014-01-01 12:30 UTC'), dflt_tz))
+ 2014-01-01 12:30:00+00:00
+ >>> print(default_tzinfo(parse('2014-01-01 12:30'), dflt_tz))
+ 2014-01-01 12:30:00-05:00
+
+ :param dt:
+ The datetime on which to replace the time zone
+
+ :param tzinfo:
+ The :py:class:`datetime.tzinfo` subclass instance to assign to
+ ``dt`` if (and only if) it is naive.
+
+ :return:
+ Returns an aware :py:class:`datetime.datetime`.
+ """
+ if dt.tzinfo is not None:
+ return dt
+ else:
+ return dt.replace(tzinfo=tzinfo)
+
+
+def within_delta(dt1, dt2, delta):
+ """
+ Useful for comparing two datetimes that may have a negligible difference
+ to be considered equal.
+ """
+ delta = abs(delta)
+ difference = dt1 - dt2
+ return -delta <= difference <= delta