Diskussion:LIP 19100: Unterschied zwischen den Versionen

Aus UUGRN
(Wirrungen von Perl)
 
(→‎19107: Lesen Bildet)
Zeile 19: Zeile 19:
 
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!  
 
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!  
  
 +
--[[Benutzer:Rabe|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:
  
--[[Benutzer:Rabe|rabe]] 22:34, 25. Jul. 2007 (CEST)
+
                      $year += 1900;
 +
 
 +
              And to get the last two digits of the year (e.g., â01â in 2001) do:
 +
 
 +
                      $year = sprintf("%02d", $year % 100);
 +
 
 +
--[[Benutzer:Ph3-der-loewe|ph3-der-loewe]] 23:26, 25. Jul. 2007 (CEST)

Version vom 25. Juli 2007, 21:26 Uhr

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)