

Portability issues: "localtime" in perlport. 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. The Time::gmtime and Time::localtime modules provide a convenient, by-name access mechanism to the gmtime and localtime functions, respectively.įor a comprehensive date and time representation look at the DateTime module on CPAN.įor GMT instead of local time use the gmtime builtin. 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.

#PERL DATETIME HOW TO#
See perllocale for how to set up and change that 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. # or for GMT formatted appropriately for your locale: My $now_string = strftime "%a %b %e %H:%M:%S %Y", localtime To get similar but locale-dependent date strings, try for example: use POSIX qw(strftime) This scalar value is always in English, and is not locale-dependent. In scalar context, localtime returns the ctime(3) value: my $now_string = localtime # e.g., "Thu Oct 13 04:54:34 1994" If EXPR is omitted, localtime uses the current time (as returned by time). $isdst is true if the specified time occurs when Daylight Saving Time is in effect, false otherwise. $yday is the day of the year, in the range 0.364 (or 0.365 in leap years.) $wday is the day of the week, with 0 indicating Sunday and 3 indicating Wednesday. This is necessary because without a base, many durations are not comparable. For date and time processing look at the many related modules on CPAN. Comparison is done by adding each duration to the specified DateTime object and comparing the resulting datetimes. For measuring time in better granularity than one second, use the Time::HiRes module from Perl 5.8 onwards (or from CPAN before then), or, if you have gettimeofday (2), you may be able to use the syscall interface of Perl. To get the last two digits of the year (e.g., "01" in 2001) do: $year = sprintf("%02d", $year % 100) DateTime::Duration->compare ( duration1, duration2, basedatetime ) This is a class method that can be used to compare or sort durations. To get a 4-digit year write: $year += 1900 $year contains the number of years since 1900. This makes it easy to get a month name from a list: my = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec) $mday is the day of the month and $mon the month in the range 0.11, with 0 indicating January and 11 indicating December. $sec, $min, and $hour are the seconds, minutes, and hours of the specified time. My ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =Īll list elements are numeric and come straight out of the C `struct tm'. Typically used as follows: # 0 1 2 3 4 5 6 7 8 Converts a time as returned by the time function to a 9-element list with the time analyzed for the local time zone.
