:tocdepth: 3 :py:mod:`gws.lib.datetimex` =========================== .. py:module:: gws.lib.datetimex .. autoapi-nested-parse:: Date and time utilities. These utilities are wrappers around the `datetime` module, some functions also use `pendulum` (https://pendulum.eustace.io/), however all functions here return strictly stock ``datetime.datetime`` objects. ``date`` objects are silently promoted to ``datetime`` with time set to midnight UTC. ``time`` objects are silently promoted to ``datetime`` in the local timezone with the today's date. This module always returns timezone-aware objects. When constructing an object (e.g. from a string), the default time zone should be passed as a zoneinfo string (like ``Europe/Berlin``). An empty zoneinfo string (default) means the local time zone. Alias names like ``CEST`` are not supported. Naive datetime arguments are assumed to be in the local time zone. When running in a docker container, there are several ways to set up the local time zone: - by setting the config variable ``server.timeZone`` (see `gws.config.parser`) - by setting the ``TZ`` environment variable - mounting a host zone info file to ``/etc/localtime`` **Source code:** :source:`gws.lib.datetimex` Package Contents ---------------- .. py:function:: add(d: Optional[datetime.date] = None, years=0, months=0, days=0, weeks=0, hours=0, minutes=0, seconds=0, microseconds=0) -> datetime.datetime .. py:function:: day_of_week(d: Optional[datetime.date] = None) -> int .. py:function:: day_of_year(d: Optional[datetime.date] = None) -> int .. py:function:: days_in_month(d: Optional[datetime.date] = None) -> int .. py:class:: Diff .. py:attribute:: days :type: int .. py:attribute:: hours :type: int .. py:attribute:: microseconds :type: int .. py:attribute:: minutes :type: int .. py:attribute:: months :type: int .. py:attribute:: seconds :type: int .. py:attribute:: weeks :type: int .. py:attribute:: years :type: int .. py:function:: difference(d1: datetime.date, d2: Optional[datetime.date] = None) -> Diff .. py:function:: end_of_day(d: Optional[datetime.date] = None) -> datetime.datetime .. py:function:: end_of_hour(d: Optional[datetime.date] = None) -> datetime.datetime .. py:function:: end_of_minute(d: Optional[datetime.date] = None) -> datetime.datetime .. py:function:: end_of_month(d: Optional[datetime.date] = None) -> datetime.datetime .. py:function:: end_of_second(d: Optional[datetime.date] = None) -> datetime.datetime .. py:function:: end_of_week(d: Optional[datetime.date] = None) -> datetime.datetime .. py:function:: end_of_year(d: Optional[datetime.date] = None) -> datetime.datetime .. py:exception:: Error Bases: :py:obj:`gws.Error` GWS error. .. py:function:: from_iso_string(s: str, tz: str = '') -> datetime.datetime .. py:function:: from_iso_time_string(s: str, tz: str = '') -> datetime.datetime .. py:function:: from_string(s: str, tz: str = '') -> datetime.datetime .. py:function:: from_timestamp(n: float, tz: str = '') -> datetime.datetime .. py:function:: is_date(x) -> bool .. py:function:: is_datetime(x) -> bool .. py:function:: is_local(d: datetime.datetime) -> bool .. py:function:: is_utc(d: datetime.datetime) -> bool .. py:function:: mock_now(d) .. py:function:: new(year, month, day, hour=0, minute=0, second=0, microsecond=0, fold=0, tz: str = '') -> datetime.datetime .. py:function:: next(day: int | str, d: Optional[datetime.date] = None, keep_time=False) -> datetime.datetime .. py:function:: now(tz: str = '') -> datetime.datetime .. py:function:: now_utc() -> datetime.datetime .. py:function:: parse(s: str | datetime.datetime | datetime.date | None, tz: str = '') -> Optional[datetime.datetime] .. py:function:: parse_duration(s: str) -> int Converts weeks, days, hours or minutes to seconds. :param s: Time of duration. :returns: Input as seconds. :raises ``ValueError``: if the duration is invalid. .. py:function:: parse_time(s: str | datetime.time | None, tz: str = '') -> Optional[datetime.datetime] .. py:function:: prev(day: int | str, d: Optional[datetime.date] = None, keep_time=False) -> datetime.datetime .. py:function:: set_local_time_zone(tz: str) .. py:function:: start_of_day(d: Optional[datetime.date] = None) -> datetime.datetime .. py:function:: start_of_hour(d: Optional[datetime.date] = None) -> datetime.datetime .. py:function:: start_of_minute(d: Optional[datetime.date] = None) -> datetime.datetime .. py:function:: start_of_month(d: Optional[datetime.date] = None) -> datetime.datetime .. py:function:: start_of_second(d: Optional[datetime.date] = None) -> datetime.datetime .. py:function:: start_of_week(d: Optional[datetime.date] = None) -> datetime.datetime .. py:function:: start_of_year(d: Optional[datetime.date] = None) -> datetime.datetime .. py:function:: time_zone(tz: str = '') -> zoneinfo.ZoneInfo .. py:function:: to_basic_string(d: Optional[datetime.date] = None) -> str .. py:function:: to_iso_date_string(d: Optional[datetime.date] = None) -> str .. py:function:: to_iso_string(d: Optional[datetime.date] = None, with_tz='+', sep='T') -> str .. py:function:: to_iso_time_string(d: Optional[datetime.date] = None, with_tz='+') -> str .. py:function:: to_local(d: Optional[datetime.date] = None) -> datetime.datetime .. py:function:: to_millis(d: Optional[datetime.date] = None) -> int .. py:function:: to_string(fmt: str, d: Optional[datetime.date] = None) -> str .. py:function:: to_time_zone(tz: str, d: Optional[datetime.date] = None) -> datetime.datetime .. py:function:: to_timestamp(d: Optional[datetime.date] = None) -> int .. py:function:: to_utc(d: Optional[datetime.date] = None) -> datetime.datetime .. py:function:: today(tz: str = '') -> datetime.datetime .. py:function:: today_utc() -> datetime.datetime .. py:function:: total_difference(d1: datetime.date, d2: Optional[datetime.date] = None) -> Diff .. py:data:: UTC .. py:function:: week_of_month(d: Optional[datetime.date] = None) -> int .. py:function:: week_of_year(d: Optional[datetime.date] = None) -> int