Converts a time as returned by the time function to a 9-element list with the time analyzed for the local time zone. Typically used as follows:
# 0 1 2 3 4 5 6 7 8
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
localtime(time);
All list elements are numeric and come straight out of the C 'struct tm'. $sec
, $min
, and $hour
are the seconds, minutes, and hours of the specified time.
$mday
is the day of the month and $mon
the month in the range 0..11
, with 0 indicating January and 11 indicating December. This makes it easy to get a month name from a list:
my @abbr = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
print "$abbr[$mon] $mday";
# $mon=9, $mday=18 gives "Oct 18"
$year
contains the number of years since 1900. To get the full year write:
$year += 1900;
To get the last two digits of the year (e.g., "01" in 2001) do:
$year = sprintf("%02d", $year % 100);
$wday
is the day of the week, with 0 indicating Sunday and 3 indicating Wednesday. $yday
is the day of the year, in the range 0..364
(or 0..365
in leap years.)
$isdst
is true if the specified time occurs when Daylight Saving Time is in effect, false otherwise.
If EXPR is omitted, localtime
uses the current time (as returned by time
).
In scalar context, localtime
returns the ctime(3) value:
my $now_string = localtime; # e.g., "Thu Oct 13 04:54:34 1994"
This scalar value is always in English, and is not locale-dependent. To get similar but locale-dependent date strings, try for example:
use POSIX qw(strftime);
my $now_string = strftime "%a %b %e %H:%M:%S %Y", localtime;
# or for GMT formatted appropriately for your locale:
my $now_string = strftime "%a %b %e %H:%M:%S %Y", gmtime;
$now_string
will be formatted according to the current LC_TIME locale the program or thread is running in. See perllocale for how to set up and change that locale. Note that %a
and %b
, the short forms of the day of the week and the month of the year, may not necessarily be three characters wide.
The Time::gmtime and Time::localtime modules provide a convenient, by-name access mechanism to the gmtime
and localtime
functions, respectively.
For a comprehensive date and time representation look at the DateTime module on CPAN.
For GMT instead of local time use the gmtime
builtin.
See also the Time::Local
module (for converting seconds, minutes, hours, and such back to the integer value returned by time
), and the POSIX module's mktime
function.
Portability issues: "localtime" in perlport.