File Tests in Perl - The localtime Function (
Page 4 of 6 )
When you have a timestamp number (such as the ones from stat), it will typically look something like 1180630098. That won’t help you, unless you need to compare two timestamps by subtracting. You may need to convert it to something human-readable, such as a string like “Thu May 31 09:48:18 2007”. Perl can do that with the localtime function in a scalar context:
my $timestamp = 1180630098;
my $date = localtime $timestamp;
In a list context,
localtime
returns a list of numbers, several of which may not be what you’d expect:
my($sec, $min, $hour, $day, $mon, $year, $wday, $yday, $isdst)
= localtime $timestamp;
The
$mon
is a month number, ranging from
0
to
11
, which is handy as an index into an array of month names. The
$year
is the number of years since 1900, oddly enough, so add
1900
to get the real year number. The
$wday
ranges from
0
(for Sun
day) through
6
(for Saturday), and the
$yday
is the day-of-the-year (ranging from 0 for January 1, through 364 or 365 for December 31).
Two related functions are also useful. The
gmtime
function is the same as
localtime
, except that it returns the time in Universal Time (what we once called Greenwich Mean Time). If you need the current timestamp number from the system clock, use the
time
function. Both
localtime
and
gmtime
default to using the current
time
value if you don’t supply a parameter:
my $now = gmtime; # Get the current universal timestamp as a string
For more information on manipulating date and time information, see the information about some useful modules in Appendix R.