123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- # -*- 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 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 a negilible difference
- to be considered equal.
- """
- delta = abs(delta)
- difference = dt1 - dt2
- return -delta <= difference <= delta
|