Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
wiseplat
GitHub Repository: wiseplat/python-code
Path: blob/master/ invest-robot-contest_TinkoffBotTwitch-main/venv/lib/python3.8/site-packages/dateutil/utils.py
7763 views
1
# -*- coding: utf-8 -*-
2
"""
3
This module offers general convenience and utility functions for dealing with
4
datetimes.
5
6
.. versionadded:: 2.7.0
7
"""
8
from __future__ import unicode_literals
9
10
from datetime import datetime, time
11
12
13
def today(tzinfo=None):
14
"""
15
Returns a :py:class:`datetime` representing the current day at midnight
16
17
:param tzinfo:
18
The time zone to attach (also used to determine the current day).
19
20
:return:
21
A :py:class:`datetime.datetime` object representing the current day
22
at midnight.
23
"""
24
25
dt = datetime.now(tzinfo)
26
return datetime.combine(dt.date(), time(0, tzinfo=tzinfo))
27
28
29
def default_tzinfo(dt, tzinfo):
30
"""
31
Sets the ``tzinfo`` parameter on naive datetimes only
32
33
This is useful for example when you are provided a datetime that may have
34
either an implicit or explicit time zone, such as when parsing a time zone
35
string.
36
37
.. doctest::
38
39
>>> from dateutil.tz import tzoffset
40
>>> from dateutil.parser import parse
41
>>> from dateutil.utils import default_tzinfo
42
>>> dflt_tz = tzoffset("EST", -18000)
43
>>> print(default_tzinfo(parse('2014-01-01 12:30 UTC'), dflt_tz))
44
2014-01-01 12:30:00+00:00
45
>>> print(default_tzinfo(parse('2014-01-01 12:30'), dflt_tz))
46
2014-01-01 12:30:00-05:00
47
48
:param dt:
49
The datetime on which to replace the time zone
50
51
:param tzinfo:
52
The :py:class:`datetime.tzinfo` subclass instance to assign to
53
``dt`` if (and only if) it is naive.
54
55
:return:
56
Returns an aware :py:class:`datetime.datetime`.
57
"""
58
if dt.tzinfo is not None:
59
return dt
60
else:
61
return dt.replace(tzinfo=tzinfo)
62
63
64
def within_delta(dt1, dt2, delta):
65
"""
66
Useful for comparing two datetimes that may have a negligible difference
67
to be considered equal.
68
"""
69
delta = abs(delta)
70
difference = dt1 - dt2
71
return -delta <= difference <= delta
72
73