Source code for wasp_general.datetime

# -*- coding: utf-8 -*-
# wasp_general/datetime.py
#
# Copyright (C) 2016 the wasp-general authors and contributors
# <see AUTHORS file>
#
# This file is part of wasp-general.
#
# Wasp-general is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Wasp-general is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with wasp-general.  If not, see <http://www.gnu.org/licenses/>.

# noinspection PyUnresolvedReferences
from wasp_general.version import __author__, __version__, __credits__, __license__, __copyright__, __email__
# noinspection PyUnresolvedReferences
from wasp_general.version import __status__

import time
from datetime import datetime, timezone, timedelta

from wasp_general.verify import verify_type


[docs]def local_tz(): """ Return current system timezone shift from UTC :return: datetime.timezone """ return timezone(timedelta(0, (time.timezone * -1)))
[docs]@verify_type(dt=(datetime, None), local_value=bool) def utc_datetime(dt=None, local_value=True): """ Convert local datetime and/or datetime without timezone information to UTC datetime with timezone information. :param dt: local datetime to convert. If is None, then system datetime value is used :param local_value: whether dt is a datetime in system timezone or UTC datetime without timezone information :return: datetime in UTC with tz set """ # TODO: rename local_value to local_tz or in_local_tz if dt is None: return datetime.now(tz=timezone.utc) result = dt if result.utcoffset() is None: if local_value is False: return result.replace(tzinfo=timezone.utc) else: result = result.replace(tzinfo=local_tz()) return result.astimezone(timezone.utc)
[docs]@verify_type(dt=(datetime, None), utc_value=bool) def local_datetime(dt=None, utc_value=True): """ Convert UTC datetime and/or datetime without timezone information to local datetime with timezone information :param dt: datetime in UTC to convert. If is None, then system datetime value is used :param utc_value: whether dt is a datetime in UTC or in system timezone without timezone information :return: datetime for system (local) timezone with tz set """ # TODO: rename utc_value to utc_tz or in_utc_tz if dt is None: return datetime.now(tz=local_tz()) result = dt if result.utcoffset() is None: if utc_value is False: return result.replace(tzinfo=local_tz()) else: result = result.replace(tzinfo=timezone.utc) return result.astimezone(local_tz())