NAME
    Sah::Schemas::Date - Sah schemas related to date

VERSION
    This document describes version 0.019 of Sah::Schemas::Date (from Perl
    distribution Sah-Schemas-Date), released on 2023-12-09.

SYNOPSIS
SAH SCHEMAS
    The following schemas are included in this distribution:

    *   date::day

        Day of month (1-31), e.g. 17.

    *   date::dow_name::en

        Day-of-week name (abbreviated or full, in English), e.g. "su" or
        "Monday".

        See also: Sah::Schema::date::dow_num.

        See also related schemas for other locales, e.g.
        Sah::Schema::date::dow_name::id (Indonesian),
        Sah::Schema::date::dow_name::en_or_id (English/Indonesian), etc.

    *   date::dow_num

        Day-of-week number (1-7, 1=Monday, like DateTime), coercible from
        English day-of-week name (Mo/mon/MONDAY), e.g. 1 or "Mon".

        See also related schemas that coerce from other locales, e.g.
        Sah::Schema::date::dow_num::id (Indonesian),
        Sah::Schema::date::dow_num::en_or_id (English/Indonesian), etc.

    *   date::dow_nums

        Array of required date::dow_num (day-of-week, 1-7, 1=Monday, like
        DateTime, with coercions), e.g. [1,3,5].

        See also Sah::Schema::date::dow_num which is the schema for the
        elements.

        See also related schemas that coerce from other locales, e.g.
        Sah::Schema::date::dow_nums::id (Indonesian),
        Sah::Schema::date::dow_num::en_or_id (English/Indonesian), etc.

    *   date::hour

        Hour of day (0-23), e.g. 12.

    *   date::minute

        Minute of hour (0-59), e.g. 30.

    *   date::month::en

        Month number/name (abbreviated or full, in English), e.g. 1 or "jan"
        or "September".

        Note that name is not coerced to number; use
        Sah::Schema::date::month_num::id for that.

        See also related schemas for other locales, e.g.
        Sah::Schema::date::month::id (Indonesian),
        Sah::Schema::date::month::en_or_id (English/Indonesian), etc.

    *   date::month_name::en

        Month name (abbreviated or full, in English), e.g. "jan" or
        "September".

        See also: Sah::Schema::date::month_num.

        See also related schemas for other locales, e.g.
        Sah::Schema::date::month_name::id (Indonesian),
        Sah::Schema::date::month_name::en_or_id (English/Indonesian), etc.

    *   date::month_num

        Month number, coercible from English month names (Dec/DECEMBER),
        e.g. 2 or "Feb".

        See also related schemas that coerce from other locales, e.g.
        Sah::Schema::date::month_num::id (Indonesian),
        Sah::Schema::date::month_num::en_or_id (English/Indonesian), etc.

    *   date::month_nums

        Array of required month numbers (1-12, with coercions), e.g. [6,12].

        See also related schemas that coerce from other locales, e.g.
        Sah::Schema::date::month_nums::id (Indonesian),
        Sah::Schema::date::month_nums::en_or_id (English/Indonesian), etc.

    *   date::second

        Second of minute (0-60), e.g. 39.

    *   date::tz_name

        Timezone name (validity not checked), e.g. "Asia/Jakarta".

        Currently no validation for valid timezone names. But completion is
        provided.

    *   date::tz_offset

        Timezone offset in seconds from UTC (only known offsets are allowd,
        coercible from string), e.g. 25200 or "+07:00".

        Only timezone offsets that are known to exist are allowed. For
        example, 1 second (+00:00:01) is not allowed. See
        "date::tz_offset_lax" for a more relaxed validation.

        A coercion from these form of string is provided:

         UTC
 
         UTC-14 or UTC+12 or UTC+12:45 or UTC-00:25:21
         -14 or +12, -1400 or +12:00

        A coercion from timezone name is also provided.

    *   date::tz_offset_lax

        Timezone offset in seconds from UTC (any offset is allowed,
        coercible from string), e.g. 1 or 25200 e.g. "UTC+7".

        This schema allows timezone offsets that are not known to exist,
        e.g. 1 second (+00:00:01). If you only want ot allow timezone
        offsets that are known to exist, see the "date::tz_offset" schema.

        A coercion from these form of string is provided:

         UTC
 
         UTC-14 or UTC+12 or UTC+12:45 or UTC-00:25:21
         -14 or +12, -1400 or +12:00

        A coercion from timezone name is also provided.

    *   date::year

        Year number (AD, starting from 1), e.g. 2022.

    *   datetime::default_end_of_last_month_local

        Datetime with default of end of last month (23:59:59/60), local
        time.

    *   datetime::default_end_of_last_month_utc

        Datetime with default of end of last month (23:59:59/60), UTC.

    *   datetime::default_end_of_yesterday_local

        Datetime with default of end of yesterday (23:59:59/60), local time.

    *   datetime::default_end_of_yesterday_utc

        Datetime with default of end of yesterday (23:59:59/60), UTC.

    *   datetime::default_start_of_this_month_local

        Datetime with default of start of this month (00:00:00 day 1), local
        time.

    *   datetime::default_start_of_this_month_utc

        Datetime with default of start of this month (00:00:00 day 1), UTC.

    *   datetime::default_start_of_today_local

        Datetime with default of start of today (00:00:00), local time.

    *   datetime::default_start_of_today_utc

        Datetime with default of start of today (00:00:00), UTC.

HOMEPAGE
    Please visit the project's homepage at
    <https://metacpan.org/release/Sah-Schemas-Date>.

SOURCE
    Source repository is at
    <https://github.com/perlancar/perl-Sah-Schemas-Date>.

SEE ALSO
    Data::Sah::Type::date

    Sah - schema specification

    Data::Sah - Perl implementation of Sah

AUTHOR
    perlancar <perlancar@cpan.org>

CONTRIBUTING
    To contribute, you can send patches by email/via RT, or send pull
    requests on GitHub.

    Most of the time, you don't need to build the distribution yourself. You
    can simply modify the code, then test via:

     % prove -l

    If you want to build the distribution (e.g. to try to install it locally
    on your system), you can install Dist::Zilla,
    Dist::Zilla::PluginBundle::Author::PERLANCAR,
    Pod::Weaver::PluginBundle::Author::PERLANCAR, and sometimes one or two
    other Dist::Zilla- and/or Pod::Weaver plugins. Any additional steps
    required beyond that are considered a bug and can be reported to me.

COPYRIGHT AND LICENSE
    This software is copyright (c) 2023, 2022, 2020, 2019 by perlancar
    <perlancar@cpan.org>.

    This is free software; you can redistribute it and/or modify it under
    the same terms as the Perl 5 programming language system itself.

BUGS
    Please report any bugs or feature requests on the bugtracker website
    <https://rt.cpan.org/Public/Dist/Display.html?Name=Sah-Schemas-Date>

    When submitting a bug or request, please include a test-file or a patch
    to an existing test-file that illustrates the bug or desired feature.

