From Code to Community: Sponsoring The Perl and Raku Conference 2025 Learn more

NAME

Time::Local::More - More functions for producing Unix epoch timestamp or localtime/gmtime tuple

VERSION

This document describes version 0.002 of Time::Local::More (from Perl distribution Time-Local-More), released on 2021-06-17.

SYNOPSIS

time_startofminute_local
time_startofminute_utc
localtime_startofminute
gmtime_startofminute
time_startofhour_local
time_startofhour_utc
localtime_startofhour
gmtime_startofhour
time_startofday_local
time_startofday_utc
localtime_startofday
gmtime_startofday
time_startofsaturday_local
time_startofsaturday_utc
localtime_startofsaturday
gmtime_startofsaturday
time_startofsunday_local
time_startofsunday_utc
localtime_startofsunday
gmtime_startofsunday
time_startofmonday_local
time_startofmonday_utc
localtime_startofmonday
gmtime_startofmonday
time_startofmonth_local
time_startofmonth_utc
localtime_startofmonth
gmtime_startofmonth
time_startoflastdayofmonth_local
time_startoflastdayofmonth_utc
localtime_startlastdayofofmonth
gmtime_startlastdayofofmonth
time_startoflastdayoflastmonth_local
time_startoflastdayoflastmonth_utc
localtime_startoflastdayoflastmonth
gmtime_startoflastdayoflastmonth
time_startofyear_local
time_startofyear_utc
localtime_startofyear
gmtime_startofyear
);
# you can import all using :all tag
my $epoch1 = 1623894635; # Thu Jun 17 08:50:35 2021 Asia/Jakarta
# Thu Jun 17 01:50:35 2021 UTC
# assuming we are in Asia/Jakarta
say time_startofday_local($epoch1); # => 1623862800
# = Thu Jun 17 00:00:00 2021 Asia/Jakarta
say time_startofday_utc($epoch1); # => 1623888000
# = Thu Jun 17 00:00:00 2021 UTC

DESCRIPTION

EARLY RELEASE: API MIGHT CHANGE.

Overview of the module:

  • The *startof* functions

    These functions basically "round" the time to the start of minute, hour, day, or so on. For example, "time_startofday_local" is basically equivalent to:

    my @t = localtime(); # e.g. 1623894635 (Thu Jun 17 08:50:35 2021 Asia/Jakarta)
    $t[0] = 0; # zero the second
    $t[1] = 0; # zero the minute
    $t[2] = 0; # zero the hour
    Time::Local::timelocal_nocheck(@t); # convert back to epoch. result is 1623862800 (Thu Jun 17 00:00:00 2021 Asia/Jakarta)

    or alternatively:

    my $t = time();
    my @t = localtime($t);
    $t - $t[0] - $t[1]*60 - $t[2]*3600;

Keywords: start of period, time rounding, truncating timestamp.

FUNCTIONS

time_startofminute_local

Usage:

my $time = time_startofminute_local( [ $time0 ] );

Return Unix epoch timestamp for start of minute at local timezone. If $time0 is not specified, will default to current timestamp (time()).

time_startofminute_utc

Usage:

my $time = time_startofminute_utc( [ $time0 ] );

Return Unix epoch timestamp for start of minute at UTC. If $time0 is not specified, will default to current timestamp (time()).

localtime_startofminute

Usage:

localtime_startofminute( [ $time0 ] ); # like output of localtime()

Return localtime() output for start of minute. If $time0 is not specified, will default to current timestamp (time()).

gmtime_startofminute

Usage:

gmtime_startofminute( [ $time0 ] ); # like output of gmtime()

Return gmtime() output for start of minute. If $time0 is not specified, will default to current timestamp (time()).

time_startofhour_local

Usage:

my $time = time_startofhour_local( [ $time0 ] );

Return Unix epoch timestamp for start of hour at local timezone. If $time0 is not specified, will default to current timestamp (time()).

time_startofhour_utc

Usage:

my $time = time_startofhour_utc( [ $time0 ] );

Return Unix epoch timestamp for start of hour at UTC. If $time0 is not specified, will default to current timestamp (time()).

localtime_startofhour

Usage:

localtime_startofhour( [ $time0 ] ); # like output of localtime()

Return localtime() output for start of hour. If $time0 is not specified, will default to current timestamp (time()).

gmtime_startofhour

Usage:

gmtime_startofhour( [ $time0 ] ); # like output of gmtime()

Return gmtime() output for start of hour. If $time0 is not specified, will default to current timestamp (time()).

time_startofday_local

Usage:

my $time = time_startofday_local( [ $time0 ] );

Return Unix epoch timestamp for start of day at local timezone. If $time0 is not specified, will default to current timestamp (time()).

time_startofday_utc

Usage:

my $time = time_startofday_utc( [ $time0 ] );

Return Unix epoch timestamp for start of day at UTC. If $time0 is not specified, will default to current timestamp (time()).

localtime_startofday

Usage:

localtime_startofday( [ $time0 ] ); # like output of localtime()

Return localtime() output for start of day. If $time0 is not specified, will default to current timestamp (time()).

gmtime_startofday

Usage:

gmtime_startofday( [ $time0 ] ); # like output of gmtime()

Return gmtime() output for start of day. If $time0 is not specified, will default to current timestamp (time()).

time_startofsaturday_local

Usage:

my $time = time_startofsaturday_local( [ $time0 ] );

Return Unix epoch timestamp for start of most recent past Saturday at local timezone. If $time0 is not specified, will default to current timestamp (time()).

time_startofsaturday_utc

Usage:

my $time = time_startofsaturday_utc( [ $time0 ] );

Return Unix epoch timestamp for start of most recent past Saturday at UTC. If $time0 is not specified, will default to current timestamp (time()).

localtime_startofsaturday

Usage:

localtime_startofsaturday( [ $time0 ] ); # like output of localtime()

Return localtime() output for start of most recent past Saturday. If $time0 is not specified, will default to current timestamp (time()).

gmtime_startofsaturday

Usage:

gmtime_startofsaturday( [ $time0 ] ); # like output of gmtime()

Return gmtime() output for start of most recent past Saturday. If $time0 is not specified, will default to current timestamp (time()).

time_startofsunday_local

Usage:

my $time = time_startofsunday_local( [ $time0 ] );

Return Unix epoch timestamp for start of most recent past Sunday at local timezone. If $time0 is not specified, will default to current timestamp (time()).

time_startofsunday_utc

Usage:

my $time = time_startofsunday_utc( [ $time0 ] );

Return Unix epoch timestamp for start of most recent past Sunday at UTC. If $time0 is not specified, will default to current timestamp (time()).

localtime_startofsunday

Usage:

localtime_startofsunday( [ $time0 ] ); # like output of localtime()

Return localtime() output for start of sunday. If $time0 is not specified, will default to current timestamp (time()).

gmtime_startofsunday

Usage:

gmtime_startofsunday( [ $time0 ] ); # like output of gmtime()

Return gmtime() output for start of most recent past Sunday. If $time0 is not specified, will default to current timestamp (time()).

time_startofmonday_local

Usage:

my $time = time_startofmonday_local( [ $time0 ] );

Return Unix epoch timestamp for start of most recent past Monday at local timezone. If $time0 is not specified, will default to current timestamp (time()).

time_startofmonday_utc

Usage:

my $time = time_startofmonday_utc( [ $time0 ] );

Return Unix epoch timestamp for start of most recent past Monday at UTC. If $time0 is not specified, will default to current timestamp (time()).

localtime_startofmonday

Usage:

localtime_startofmonday( [ $time0 ] ); # like output of localtime()

Return localtime() output for start of most recent past Monday. If $time0 is not specified, will default to current timestamp (time()).

gmtime_startofmonday

Usage:

gmtime_startofmonday( [ $time0 ] ); # like output of gmtime()

Return gmtime() output for start of most recent past Monday. If $time0 is not specified, will default to current timestamp (time()).

time_startofmonth_local

Usage:

my $time = time_startofmonth_local( [ $time0 ] );

Return Unix epoch timestamp for start of month at local timezone. If $time0 is not specified, will default to current timestamp (time()).

time_startofmonth_utc

Usage:

my $time = time_startofmonth_utc( [ $time0 ] );

Return Unix epoch timestamp for start of month at UTC. If $time0 is not specified, will default to current timestamp (time()).

localtime_startofmonth

Usage:

localtime_startofmonth( [ $time0 ] ); # like output of localtime()

Return localtime() output for start of month. If $time0 is not specified, will default to current timestamp (time()).

gmtime_startofmonth

Usage:

gmtime_startofmonth( [ $time0 ] ); # like output of gmtime()

Return gmtime() output for start of month. If $time0 is not specified, will default to current timestamp (time()).

time_startoflastdayofmonth_local

Usage:

my $time = time_startoflastdayofmonth_local( [ $time0 ] );

Return Unix epoch timestamp for start of last day of month at local timezone. If $time0 is not specified, will default to current timestamp (time()).

time_startoflastdayofmonth_utc

Usage:

my $time = time_startoflastdayofmonth_utc( [ $time0 ] );

Return Unix epoch timestamp for start of last day of month at UTC. If $time0 is not specified, will default to current timestamp (time()).

localtime_startoflastdayofmonth

Usage:

localtime_startoflastdayofmonth( [ $time0 ] ); # like output of localtime()

Return localtime() output for start of last day of month. If $time0 is not specified, will default to current timestamp (time()).

gmtime_startoflastdayofmonth

Usage:

gmtime_startoflastdayofmonth( [ $time0 ] ); # like output of gmtime()

Return gmtime() output for start of last day of month. If $time0 is not specified, will default to current timestamp (time()).

time_startoflastdayoflastmonth_local

Usage:

my $time = time_startoflastdayoflastmonth_local( [ $time0 ] );

Return Unix epoch timestamp for start of last day of last month at local timezone. If $time0 is not specified, will default to current timestamp (time()).

time_startoflastdayoflastmonth_utc

Usage:

my $time = time_startoflastdayoflastmonth_utc( [ $time0 ] );

Return Unix epoch timestamp for start of last day of last month at UTC. If $time0 is not specified, will default to current timestamp (time()).

localtime_startoflastdayoflastmonth

Usage:

localtime_startoflastdayoflastmonth( [ $time0 ] ); # like output of localtime()

Return localtime() output for start of last day of last month. If $time0 is not specified, will default to current timestamp (time()).

gmtime_startoflastdayoflastmonth

Usage:

gmtime_startoflastdayoflastmonth( [ $time0 ] ); # like output of gmtime()

Return gmtime() output for start of last day of last month. If $time0 is not specified, will default to current timestamp (time()).

time_startofyear_local

Usage:

my $time = time_startofyear_local( [ $time0 ] );

Return Unix epoch timestamp for start of year at local timezone. If $time0 is not specified, will default to current timestamp (time()).

time_startofyear_utc

Usage:

my $time = time_startofyear_utc( [ $time0 ] );

Return Unix epoch timestamp for start of year at UTC. If $time0 is not specified, will default to current timestamp (time()).

localtime_startofyear

Usage:

localtime_startofyear( [ $time0 ] ); # like output of localtime()

Return localtime() output for start of year. If $time0 is not specified, will default to current timestamp (time()).

gmtime_startofyear

Usage:

gmtime_startofyear( [ $time0 ] ); # like output of gmtime()

Return gmtime() output for start of year. If $time0 is not specified, will default to current timestamp (time()).

FAQ

Where are "startofweek" functions?

Use the "startofsunday" or "startofmonday" functions; since some people use Sunday as start of the week and some people use Monday.

HOMEPAGE

Please visit the project's homepage at https://metacpan.org/release/Time-Local-More.

SOURCE

Source repository is at https://github.com/perlancar/perl-Time-Local-More.

BUGS

Please report any bugs or feature requests on the bugtracker website https://rt.cpan.org/Public/Dist/Display.html?Name=Time-Local-More

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.

SEE ALSO

Time::Local

localtime() and gmtime() in perlfunc.

You can also use DateTime to calculate these "start of period" epochs. For example, to get start of month epoch: DateTime->now->set(day => 1)->epoch. Note that DateTime has a significantly larger footprint than Time::Local.

AUTHOR

perlancar <perlancar@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2021 by 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.