Commit 59026bfb authored by Jon Dufresne's avatar Jon Dufresne Committed by Tim Graham
Browse files

Fixed #23668 -- Changed make_aware() and make_naive() to use the current timezone by default

Thanks Aymeric Augustin for review.
parent 740934b5
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -350,10 +350,12 @@ def is_naive(value):
    return value.tzinfo is None or value.tzinfo.utcoffset(value) is None


def make_aware(value, timezone):
def make_aware(value, timezone=None):
    """
    Makes a naive datetime.datetime in a given time zone aware.
    """
    if timezone is None:
        timezone = get_current_timezone()
    if hasattr(timezone, 'localize'):
        # This method is available for pytz time zones.
        return timezone.localize(value, is_dst=None)
@@ -366,10 +368,12 @@ def make_aware(value, timezone):
        return value.replace(tzinfo=timezone)


def make_naive(value, timezone):
def make_naive(value, timezone=None):
    """
    Makes an aware datetime.datetime naive in a given time zone.
    """
    if timezone is None:
        timezone = get_current_timezone()
    # If `value` is naive, astimezone() will raise a ValueError,
    # so we don't need to perform a redundant check.
    value = value.astimezone(timezone)
+14 −4
Original line number Diff line number Diff line
@@ -954,20 +954,30 @@ appropriate entities.
    Returns ``True`` if ``value`` is naive, ``False`` if it is aware. This
    function assumes that ``value`` is a :class:`~datetime.datetime`.

.. function:: make_aware(value, timezone)
.. function:: make_aware(value, timezone=None)

    Returns an aware :class:`~datetime.datetime` that represents the same
    point in time as ``value`` in ``timezone``, ``value`` being a naive
    :class:`~datetime.datetime`.
    :class:`~datetime.datetime`. If ``timezone`` is set to ``None``, it
    defaults to the :ref:`current time zone <default-current-time-zone>`.

    This function can raise an exception if ``value`` doesn't exist or is
    ambiguous because of DST transitions.

.. function:: make_naive(value, timezone)
    .. versionchanged:: 1.8

        In older versions of Django, ``timezone`` was a required argument.

.. function:: make_naive(value, timezone=None)

    Returns an naive :class:`~datetime.datetime` that represents in
    ``timezone``  the same point in time as ``value``, ``value`` being an
    aware :class:`~datetime.datetime`
    aware :class:`~datetime.datetime`. If ``timezone`` is set to ``None``, it
    defaults to the :ref:`current time zone <default-current-time-zone>`.

    .. versionchanged:: 1.8

        In older versions of Django, ``timezone`` was a required argument.

.. _pytz: http://pytz.sourceforge.net/