NAME
    App::dateseq - Generate a sequence of dates

VERSION
    This document describes version 0.112 of App::dateseq (from Perl
    distribution App-dateseq), released on 2022-10-12.

FUNCTIONS
  dateseq
    Usage:

     dateseq(%args) -> [$status_code, $reason, $payload, \%result_meta]

    Generate a sequence of dates.

    This utility is similar to Unix seq command, except that it generates a
    sequence of dates.

    This function is not exported.

    Arguments ('*' denotes required arguments):

    *   business => *bool*

        Only list business days (Mon-Fri), or non-business days.

    *   business6 => *bool*

        Only list business days (Mon-Sat), or non-business days.

    *   eval => *str*

        Run perl code for each date.

        Specified perl code will receive the date as DateTime object in
        $_and expected to return result to print.

    *   exclude_dow => *date::dow_nums*

        Do not show dates with these day-of-weeks.

    *   exclude_month => *date::month_nums*

        Do not show dates with these month numbers.

    *   format_class => *perl::modname*

        Use a DateTime::Format::* class for formatting.

        By default, DateTime::Format::Strptime is used with pattern set from
        the <strftime> option.

    *   format_class_attrs => *hash*

        Arguments to pass to constructor of DateTime::Format::* class.

    *   from => *date*

        Starting date.

    *   header => *str*

        Add a header row.

    *   include_dow => *date::dow_nums*

        Only show dates with these day-of-weeks.

    *   include_month => *date::month_nums*

        Only show dates with these month numbers.

    *   increment => *duration*

    *   limit => *posint*

        Only generate a certain amount of dates.

    *   limit_monthly => *posint*

        Only output at most this number of dates for each month.

    *   limit_yearly => *posint*

        Only output at most this number of dates for each year.

    *   random => *true*

        Instead of incrementing/decrementing monotonically, generate random
        date between --to and --from.

        If you specify this, you have to specify "--to" *and* "--from".

        Also, currently, if you also specify "--limit-yearly" or
        "--limit-monthly", the script may hang because it runs out of dates,
        so be careful when specifying these options combined.

    *   reverse => *true*

        Decrement instead of increment.

    *   strftime => *str*

        strftime() format for each date.

        Default is "%Y-%m-%d", unless when hour/minute/second is specified,
        then it is "%Y-%m-%dT%H:%M:%S".

        "dateseq" actually uses DateTimeX::strftimeq, so you can embed Perl
        code for flexibility. For example:

         % dateseq 2019-11-19 2019-11-25 -f '%Y-%m-%d%( $_->day_of_week == 7 ? "su" : "" )q'

        will print something like:

         2019-11-19
         2019-11-20
         2019-11-21
         2019-11-22
         2019-11-23
         2019-11-24su
         2019-11-25

    *   to => *date*

        End date, if not specified will generate an infinite* stream of
        dates.

    Returns an enveloped result (an array).

    First element ($status_code) is an integer containing HTTP-like status
    code (200 means OK, 4xx caller error, 5xx function error). Second
    element ($reason) is a string containing error message, or something
    like "OK" if status is 200. Third element ($payload) is the actual
    result, but usually not present when enveloped result is an error
    response ($status_code is not 2xx). Fourth element (%result_meta) is
    called result metadata and is optional, a hash that contains extra
    information, much like how HTTP response headers provide additional
    metadata.

    Return value: (any)

HOMEPAGE
    Please visit the project's homepage at
    <https://metacpan.org/release/App-dateseq>.

SOURCE
    Source repository is at <https://github.com/perlancar/perl-App-dateseq>.

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) 2022, 2021, 2020, 2019, 2016, 2015 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=App-dateseq>

    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.