Diskussion:LIP 19100

Aus UUGRN

19107

Perl arbeitet intern also 4stellig, bietet aber einen vorsätzlich falschen (-1900) Wert für die Jahreszahl an, denn alle Welt will 2stellig arbeiten.

Code
#! /usr/bin/perl
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
print $year."-".$mon."-".$mday."\n";

Ausgabe:

$ ./19100.pl
107-6-25

Diese Form der "Vereinfachung" führte in vielen Programmen zu Konstrukten wie

"19".$year

anstatt

1900+$year

... was wiederum oftmals zur Ausgabe von "19100" führte. Man darf sich mit gesundem Menschenverstand fragen, warum die Funktion eine semi-2stellige Jahreszahl zurückliefert, damit dann im Code außen herum die unterschlagenen 1900 Jahre wieder addiert werden können. Braindead!

--rabe 22:34, 25. Jul. 2007 (CEST)

Lesen bildet:

              Note that the $year element is not simply the last two digits of the year.  If you assume it is then you
              create non-Y2K-compliant programs--and you wouldnât want to do that, would you?
              The proper way to get a complete 4-digit year is simply:
                      $year += 1900;
              And to get the last two digits of the year (e.g., â01â in 2001) do:
                      $year = sprintf("%02d", $year % 100);

--ph3-der-loewe 23:26, 25. Jul. 2007 (CEST)