Hallo Thomas,
was ich wissen möchte wie im perl eben diese "zurückrechnung" erfolgt. also ich möchte den algorythmus kennen mit dem perl aus den sekunden das datum zurückrechnet.
Geht es Dir darum, welchen Algorithmus PERL selbst dazu verwendet, oder möchtest Du einfach einen Algorithmus, der das auch kann?
Bei letzterem kann ich Dir aushelfen, hab grad mal eins geschrieben...
Ich denke, Du wirst damit klar kommen ... ansonsten einfach fragen.
Grüße, Vedat
#!/usr/bin/perl
sj ($jahr) gibt zurück, ob ein Jahr ein Schaltjahr ist
Gibt 1 für ja und 0 für nein zurück.
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 % 1000)==0) {$sj++} # aber wenn auch durch 1000 teilbar, dann doch Schaltjahr
return $sj;
}
sub tim ($monat, $jahr);
Gibt zurück, wieviele Tage der aktuelle Monat hat.
sub tim {
my $m = shift;
my $j=shift;
my @tage = (0,31,28,31,30,31,30,31,31,30,31,30,31);
$tim=$tage[$m];
if ($m==2) { $tim += sj($j); }
return $tim;
}
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 ...
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) {
$zaehler +=(365 * 24 * 60 * 60);
$zaehler += (sj ($jahr) * 24 * 60 * 60);
$jahr++;
}
$jahr--; #der Algorithmus oben schiesst um ein Jahr über :-)
$zaehler -=(365 * 24 * 60 * 60);
$zaehler -= (sj ($jahr) * 24 * 60 * 60);
Das Gleiche mit dem Monat...
while ($zaehler<$t) {
$zaehler +=(tim($monat,$jahr) * 24 * 60 * 60);
$monat++;
}
$monat--;
$zaehler -=(tim($monat,$jahr) * 24 * 60 * 60);
Jetzt noch die Tage
while ($zaehler<$t) {
$zaehler +=(24 * 60 * 60);
$tag++;
}
$tag--;
Wenn Du lustig bist, kannst Du noch die Stunden und Minuten auf diese Weise hochzählen....
#Schnell mal kucken, was der gerechnet hat ...
print "$tag.$monat.$jahr";
... also bei mir hat er richtig gerechnet *g*
exit(0);