.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "Time::y2038 3pm" .TH Time::y2038 3pm "2020-12-27" "perl v5.32.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Time::y2038 \- Versions of Perl's time functions which work beyond 2038 .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 1 \& use Time::y2038; \& \& print scalar gmtime 2**52; # Sat Dec 6 03:48:16 142715360 .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" On many computers, Perl's time functions will not work past the year 2038. This is a design fault in the underlying C libraries Perl uses. Time::y2038 provides replacements for those functions which will work accurately +/1 142 million years. .PP This only imports the functions into your namespace. To replace it everywhere, see Time::y2038::Everywhere. .PP Replaces the following functions: .PP \fI\f(BIgmtime()\fI\fR .IX Subsection "gmtime()" .PP See \*(L"gmtime\*(R" in perlfunc for details. .PP \fI\f(BIlocaltime()\fI\fR .IX Subsection "localtime()" .PP See \*(L"localtime\*(R" in perlfunc for details. .PP \fI\f(BItimegm()\fI\fR .IX Subsection "timegm()" .PP .Vb 1 \& my $time = timegm($sec, $min, $hour, $month_day, $month, $year); .Ve .PP The inverse of \f(CW\*(C`gmtime()\*(C'\fR, takes a date and returns the coorsponding \&\f(CW$time\fR (number of seconds since Midnight, January 1st, 1970 \s-1GMT\s0). All values are the same as \f(CW\*(C`gmtime()\*(C'\fR so \f(CW$month\fR is 0..11 (January is 0) and the \f(CW$year\fR is years since 1900 (2008 is 108). .PP .Vb 2 \& # June 4, 1906 03:02:01 GMT \& my $time = timegm(1, 2, 3, 4, 5, 6); .Ve .PP \&\fBtimegm()\fR can take two additional arguments which are always ignored. This lets you feed the results from \fBgmtime()\fR back into \fBtimegm()\fR without having to strip the arguments off. .PP The following is always true: .PP .Vb 1 \& timegm(gmtime($time)) == $time; .Ve .PP \fI\f(BItimelocal()\fI\fR .IX Subsection "timelocal()" .PP .Vb 2 \& my $time = timelocal($sec, $min, $hour, $mday, $month, $year); \& my $time = timelocal($sec, $min, $hour, $mday, $month, $year, $wday, $yday, $isdst); .Ve .PP Like \f(CW\*(C`timegm()\*(C'\fR, but interprets the date in the current time zone. .PP \&\f(CW\*(C`timelocal()\*(C'\fR will normally figure out if daylight savings time is in effect, but if \f(CW$isdst\fR is given this will override that check. This is mostly useful to resolve ambiguous times around \*(L"fall back\*(R" when the hour between 1am and 2am occurs twice. .PP .Vb 2 \& # Sun Nov 4 00:59:59 2007 \& print timelocal(59, 59, 0, 4, 10, 107); # 1194163199 \& \& # Sun Nov 4 01:00:00 2007 DST, one second later \& print timelocal(0, 0, 1, 4, 10, 107, undef, undef, 1); # 1194163200 \& \& # Sun Nov 4 01:00:00 2007 no DST, one hour later \& print timelocal(0, 0, 1, 4, 10, 107, undef, undef, 0); # 1194166800 .Ve .PP \&\f(CW$wday\fR and \f(CW$yday\fR are ignored. They are only there for compatibility with the return value of \f(CW\*(C`localtime()\*(C'\fR. .SH "LIMITATIONS" .IX Header "LIMITATIONS" The safe range of times is +/ 2**52 (about 142 million years). .PP Although the underlying time library can handle times from \-2**63 to 2**63\-1 (about +/\- 292 billion years) Perl uses floating point numbers internally and so accuracy degrates after 2**52. .SH "BUGS & FEEDBACK" .IX Header "BUGS & FEEDBACK" See \fIhttp://rt.cpan.org/Dist/Display.html?Queue=Time\-y2038\fR to report and view bugs. .PP If you like the module, please drop the author an email. .PP The latest version of this module can be found at \&\fIhttp://y2038.googlecode.com/\fR and the repository is at \&\fIhttp://y2038.googlecode.com/svn/trunk/\fR in \fIperl/Time\-y2038\fR. You have to check out the whole repository because there are symlinks. .SH "AUTHOR" .IX Header "AUTHOR" Michael G Schwern .SH "LICENSE & COPYRIGHT" .IX Header "LICENSE & COPYRIGHT" Copyright 2008\-2010 Michael G Schwern .PP This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. .PP See \fIhttp://www.perl.com/perl/misc/Artistic.html\fR .SH "SEE ALSO" .IX Header "SEE ALSO" Time::y2038::Everywhere overrides \fBlocaltime()\fR and \fBgmtime()\fR across the whole program. .PP The y2038 project at \fIhttp://y2038.googlecode.com/\fR .PP