Section 11.3.  The localtime Function

Table of Contents

11.3. The localtime Function

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 Sunday) 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 B.

    Table of Contents
    © 2000- NIV