localtime
localtime EXPR
localtimeThis function converts the value returned by time to a nine-element list with the time
corrected for the local time zone. It’s typically used as
follows:
# 0 1 2 3 4 5 6 7 8 ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime;
If, as here, EXPR is omitted, it does
localtime(time()).
All list elements are numeric and come straight out of a struct tm. (That’s a bit of C programming
lingo—don’t worry about it.) In particular, this means that $mon has the range 0..11 with January as month 0, and $wday has the range 0..6 with Sunday as day 0. You can remember which ones are zero-based
because those are the ones you’re always using as subscripts into
zero-based arrays containing month and day names.
For example, to get the name of the current day of the week:
$thisday = (qw(Sun Mon Tue Wed Thu Fri Sat))[(localtime)[6]];
$year is the number of years
since 1900; that is, in year 2023, $year is 123, not simply 23. To get the four-digit year, just say
$year + 1900. To get the two-digit
year (for example, “01” in 2001), use sprintf("%02d", $year % 100).
The Perl library module Time::Local contains a subroutine, timelocal, that can convert in the opposite
direction.
In scalar context, localtime
returns a ctime(3)-like string. For example, the
date(1) command can be (almost)[239] emulated with:
perl –le 'print scalar localtime()'
See also the standard POSIX module’s strftime
function for a more fine-grained approach to formatting times. The
Time::localtime ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access