Thomas J.S.: sekunden zu datum algorythmus

Beitrag lesen

Hallo Vedat,

Geht es Dir darum, welchen Algorithmus PERL selbst dazu verwendet, oder möchtest Du einfach einen Algorithmus, der das auch kann?

egal. da ich nur wusste das perl das kann fragte ich halt danach. ;-)

Ich denke, Du wirst damit klar kommen ...

oh, wohl kaum. ich kann gar kein perl ;-)
ich habe damit etwas anderes vor, deshalb möchte ich wissen wie das geht.

beispiel:
991950865  muss 07.06.2001, 23:54  zurückgeben.
wenn ich nur 991950865 (also ich habe die sekunden und möchte daraus die zeit ausrechnen) zur verfgügung habe, wie geht hier dein algorythmus vor?
--
sub sj {
  my $j = shift;
  my $sj = 0;
  if (($j % 4)==0) {$sj++} #Schaltjahr
  if (($j % 100)==0) {$sj--} #kein Schaltjahr, wenn durch 100 teilbar
  if (($j % 400)==0) {$sj++} # aber wenn auch durch 400 teilbar, dann doch Schaltjahr
  return $sj;
}

ich verstehe nicht was shift hier tut. ich habe nachgelesen was die funktion 'shift' macht, aber denn sinn verstehe ich hier nicht.

my ($jahr, $monat, $tag) = (1970,1,1); # Das Ganze beginnt bei 1.1.1970, 0:00 Uhr
my $t=time;  # hier steht das Datum im Sekundenformat ...

da würde jetzt also 991950865 stehen

my $zaehler=0; # hier zählen wir die Sekunden soweit hoch, bis wir das obige Datum erreicht haben

Erst mal die Jahre hochzählen ...

while ($zaehler<$t) {

ok, also das geht von 0 bis 991950864 (da 991950865 schon == wäre)

$zaehler +=(365 * 24 * 60 * 60);

also 991950864 + 31536000 macht 1023306864 (aber warum hier um eine sekunde weniger und um jahr hochzählen?)

$zaehler += (sj ($jahr) * 24 * 60 * 60);

das heisst also:
1023306864 + (und komme da nicht weiter: hier kommt das 'shift' von oben ins spiel nur wie? und was ist das ergebniss?

ich mache hier stop da ich ja nicht weiterrechnen kann. ;-)

grüße
thomas