NAME
    Random::Day - Class for random day generation.

SYNOPSIS
     use Random::Day;

     my $obj = Random::Day->new(%params);
     my $dt = $obj->get;
     my $dt = $obj->random;
     my $dt = $obj->random_day($day);
     my $dt = $obj->random_day_month($day, $month);
     my $dt = $obj->random_day_month_year($day, $month, $year);
     my $dt = $obj->random_day_year($day, $year);
     my $dt = $obj->random_month($month);
     my $dt = $obj->random_month_year($month, $year);
     my $dt = $obj->random_year($year);

METHODS
  "new"
     my $obj = Random::Day->new(%params);

    Constructor.

    *       "day"

            Day.

            Default value is undef.

    *       "dt_from"

            DateTime object from.

            Default value is DateTime object for 1900 year.

    *       "dt_to"

            DateTime object to.

            Default value is DateTime object for 2050 year.

    *       "month"

            Month.

            Default value is undef.

    *       "year"

            Year.

            Default value is undef.

    Returns instance of object.

  "get"
     my $dt = $obj->get;

    Get random date defined by constructor parameters.

    Returns DateTime object for date.

  "random"
     my $dt = $obj->random;

    Get random date.

    Returns DateTime object for date.

  "random_day"
     my $dt = $obj->random_day($day);

    Get random date defined by day.

    Returns DateTime object for date.

  "random_day_month"
     my $dt = $obj->random_day_month($day, $month);

    Get random date defined by day and month.

    Returns DateTime object for date.

  "random_day_year"
     my $dt = $obj->random_day_year($day, $year);

    Get random date defined by day and year.

    Returns DateTime object for date.

  "random_day_month_year"
     my $dt = $obj->random_day_month_year($day, $month, $year);

    Get random date defined by day, month and year.

    Returns DateTime object for date.

  "random_month"
     my $dt = $obj->random_month($month);

    Get random date defined by month.

    Returns DateTime object for date.

  "random_month_year"
     my $dt = $obj->random_month_year($month, $year);

    Get random date defined by month and year.

    Returns DateTime object for date.

  "random_year"
     my $dt = $obj->random_year($year);

    Get random date defined by year.

    Returns DateTime object for date.

ERRORS
     new():
             From Class::Utils::set_params():
                     Unknown parameter '%s'.
             From Mo::utils::check_isa():
                     Parameter 'dt_from' must be a 'DateTime' object.
                             Value: %s
                             Reference: %s
                     Parameter 'dt_to' must be a 'DateTime' object.
                             Value: %s
                             Reference: %s
             Parameter 'dt_from' must have older or same date than 'dt_to'.
                     Date from: %s
                     Date to: %s
             Parameters 'dt_from' and 'dt_to' are in the same day and not on begin.
                     Date from: %s
                     Date to: %s

     random_day():
             Day cannot be a zero.
             Day isn't positive number.

     random_day_month():
             Cannot create DateTime object.
             Day cannot be a zero.
             Day isn't positive number.

     random_day_month_year():
             Begin of expected month is lesser than minimal date.
                     Expected year: %s
                     Expected month: %s
                     Expected day: %s
                     Minimal year: %s
                     Minimal month: %s
                     Minimal day: %s
             Cannot create DateTime object.
                     Error: %s
             Day cannot be a zero.
             Day isn't positive number.
             End of expected month is greater than maximal date.
                     Expected year: %s
                     Expected month: %s
                     Expected day: %s
                     Maximal year: %s
                     Maximal month: %s
                     Maximal day: %s

     random_day_year():
             Day cannot be a zero.
             Day is greater than maximal possible date.
             Day is greater than possible day.
                     Day: %s
             Day is lesser than minimal possible date.
             Day isn't positive number.
             Day not fit between start and end dates.
             Year is lesser than minimal year.
                     Expected year: %s
                     Minimal year: %s
             Year is greater than maximal year.
                     Expected year: %s
                     Maximal year: %s

     random_month():
             Cannot create DateTime object.
                     Error: %s

     random_month_year():
             Begin of expected month is lesser than minimal date.
                     Expected year: %s
                     Expected month: %s
                     Minimal year: %s
                     Minimal month: %s
             Cannot create DateTime object.
                     Error: %s
             End of expected month is greater than maximal date.
                     Expected year: %s
                     Expected month: %s
                     Maximal year: %s
                     Maximal month: %s

     random_year():
             Year is greater than maximal year.
                     Expected year: %s
                     Maximal year: %s
             Year is lesser than minimal year.
                     Expected year: %s
                     Minimal year: %s

EXAMPLE
     use strict;
     use warnings;

     use Random::Day;

     # Object.
     my $obj = Random::Day->new;

     # Get date.
     my $dt = $obj->get;

     # Print out.
     print $dt->ymd."\n";

     # Output like:
     # \d\d\d\d-\d\d-\d\d

DEPENDENCIES
    Class::Utils, DateTime, DateTime::Event::Random,
    DateTime::Event::Recurrence, English, Error::Pure, Mo::utils.

SEE ALSO
    Data::Random
        Perl module to generate random data

    DateTime::Event::Random
        DateTime extension for creating random datetimes.

    Random::Day::InTheFuture
        Class for random day generation in the future.

    Random::Day::InThePast
        Class for random day generation in the past.

REPOSITORY
    <https://github.com/michal-josef-spacek/Random-Day>

AUTHOR
    Michal Josef Špaček <mailto:skim@cpan.org>

    <http://skim.cz>

LICENSE AND COPYRIGHT
    © 2013-2025 Michal Josef Špaček

    BSD 2-Clause License

VERSION
    0.17

