diff options
author | Rafael Garcia-Suarez <rgarciasuarez@gmail.com> | 2009-01-03 18:55:29 +0100 |
---|---|---|
committer | Rafael Garcia-Suarez <rgarciasuarez@gmail.com> | 2009-01-03 18:55:29 +0100 |
commit | f433f45e728fb8fd90ae712c4daa4fb4cf2cb6c2 (patch) | |
tree | a495247209955f13920d0cd895025f77c8854f34 /pod | |
parent | 2547c837a73d50421f898a78d070bf820ac97f12 (diff) | |
parent | d4fb0a1f15d1a1c49224933a2cf320efa700d961 (diff) | |
download | perl-f433f45e728fb8fd90ae712c4daa4fb4cf2cb6c2.tar.gz |
Merge branch 'schwern/y2038' into blead
Conflicts:
lib/Time/Local.pm
lib/Time/Local.t
reentr.h
Diffstat (limited to 'pod')
-rw-r--r-- | pod/perlfaq4.pod | 20 | ||||
-rw-r--r-- | pod/perlport.pod | 15 |
2 files changed, 21 insertions, 14 deletions
diff --git a/pod/perlfaq4.pod b/pod/perlfaq4.pod index 3200e7aca4..326ec9180b 100644 --- a/pod/perlfaq4.pod +++ b/pod/perlfaq4.pod @@ -516,12 +516,11 @@ Can you use your pencil to write a non-Y2K-compliant memo? Of course you can. Is that the pencil's fault? Of course it isn't. The date and time functions supplied with Perl (gmtime and localtime) -supply adequate information to determine the year well beyond 2000 -(2038 is when trouble strikes for 32-bit machines). The year returned -by these functions when used in a list context is the year minus 1900. -For years between 1910 and 1999 this I<happens> to be a 2-digit decimal -number. To avoid the year 2000 problem simply do not treat the year as -a 2-digit number. It isn't. +supply adequate information to determine the year well beyond 2000 and +2038. The year returned by these functions when used in a list +context is the year minus 1900. For years between 1910 and 1999 this +I<happens> to be a 2-digit decimal number. To avoid the year 2000 +problem simply do not treat the year as a 2-digit number. It isn't. When gmtime() and localtime() are used in scalar context they return a timestamp string that contains a fully-expanded year. For example, @@ -534,6 +533,15 @@ not the language. At the risk of inflaming the NRA: "Perl doesn't break Y2K, people do." See http://www.perl.org/about/y2k.html for a longer exposition. +=head2 Does Perl have a Year 2038 problem? + +No, all of Perl's built in date and time functions and modules will +work to about 2 billion years before and after 1970. + +Many systems cannot count time past the year 2038. Older versions of +Perl were dependent on the system to do date calculation and thus +shared their 2038 bug. + =head1 Data: Strings =head2 How do I validate input? diff --git a/pod/perlport.pod b/pod/perlport.pod index 35635a0468..39a7441956 100644 --- a/pod/perlport.pod +++ b/pod/perlport.pod @@ -641,9 +641,6 @@ The value for C<$offset> in Unix will be C<0>, but in Mac OS will be some large number. C<$offset> can then be added to a Unix time value to get what should be the proper value on any system. -On Windows (at least), you shouldn't pass a negative value to C<gmtime> or -C<localtime>. - =head2 Character sets and character encoding Assume very little about character sets. @@ -1864,7 +1861,10 @@ platforms. See L<File::Glob> for portability information. =item gmtime -Same portability caveats as L<localtime>. +In theory, gmtime() is reliable from -2**63 to 2**63-1. However, +because work arounds in the implementation use floating point numbers, +it will become inaccurate as the time gets larger. This is a bug and +will be fixed in the future. =item ioctl FILEHANDLE,FUNCTION,SCALAR @@ -1915,10 +1915,9 @@ Available on 64 bit OpenVMS 8.2 and later. (VMS) =item localtime -Because Perl currently relies on the native standard C localtime() -function, it is only safe to use times between 0 and (2**31)-1. Times -outside this range may result in unexpected behavior depending on your -operating system's implementation of localtime(). +localtime() has the same range as L<gmtime>, but because time zone +rules change its accuracy for historical and future times may degrade +but usually by no more than an hour. =item lstat |