localtime EXPR
This 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:
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = 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
,
$wday
has the
range 0..6
, and the year has had 1,900 subtracted from it.
(You can remember which ones are 0-based because those are the ones
you're always using as subscripts into 0-based arrays containing
month and day names.)
If
EXPR
is omitted, it does
localtime(time)
.
For example, to get the name of the current day of the week:
$thisday = (Sun,Mon,Tue,Wed,Thu,Fri,Sat)[(localtime)[6]];
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 based on the localtime value. For example, the date command can be emulated with:
perl -e 'print scalar localtime'
See also POSIX::strftime()
in Chapter 7 for
a more fine-grained approach to formatting times.