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.