Volker: Osterdatum mit php berechnen

Hallo,

ich versuche das Osterdatum mittels php auszurechnen. Als Grundlage habe ich mir diese ANleitung genommen: http://www.arndt-bruenner.de/mathe/scripts/osterdatum.htm . Ich glaube es ist die Gaußsche Osterformel.

Meine Frage nun zu Schritt 2:
Teile das Jahr durch 100.
Der Quotient kommt in Glas b, der Rest in Glas c.

Wie kann ich das mit php machen, dass ich sowohl den Qoutienten (nicht als Dezimalzahl) und den rest rausbekomme?
wenn man das normal dividiert, dann kommt immer eine Dezimalzahl als Ouotient raus. Den Rest kann ich ja mit "modulo" ausrechnen.

<?php
$a = 2009;
$b = 2009/100;
$c = 2009%100;
echo "$b<br>";
echo "$c";

?>

Vielen Dank
Volker

  1. Hi!

    ich versuche das Osterdatum mittels php auszurechnen.

    Was gefällt dir denn an easter_date() nicht?

    Wie kann ich das mit php machen, dass ich sowohl den Qoutienten (nicht als Dezimalzahl) und den rest rausbekomme?
    wenn man das normal dividiert, dann kommt immer eine Dezimalzahl als Ouotient raus. Den Rest kann ich ja mit "modulo" ausrechnen.

    Was genau willst du? Eine ganze Zahl als Divisionsergebnis? Dafür gibt es Rundungsfunktionen oder Typecasts zu Integer.

    Lo!

    1. Hi,

      danke für die schnelle Antwort.

      Ich bin Schüler und wir erlernen gerade .php. Aufgabe ist es eine Aufgabe das osterdatum zu berechnen. Daher dachte ich, das es besse rist, es selbe rzu schreiben. Bei der Methode (Link ist im ersten bericht) musste man immer mit Resten rechnen. Also einfaches Beispiel:

      10 / 6 = 1 Rest 4
      Es soll in php dann stehen. 10/6 = 1. Aber danke, wenn es einen Operator gibt, der immer abrundet, dann könnte mein Problem gelöst sein, denn der Rest knn ich ja mit modulo ausrechnen.

      Gibt es nun einen Operator der immer abrundet, auch über x,4, also dass x,5; x,6;...x,9; zur kleineren ganzen zahl gerundet wird?

      Grüße
      Volker

      1. Hi Volker,

        Gibt es nun einen Operator der immer abrundet, auch über x,4, also dass x,5; x,6;...x,9; zur kleineren ganzen zahl gerundet wird?

        Wie dedlfix bereits sagte, kannst du einen Typecast zu integer verwenden, das schneidet einfach alle Nachkommastellen ab (und wirkt somit wie ein Abrunden). Alternativ gibt es da zwar keinen Operator, aber eine Funktion für, floor() - heißt in vielen anderen Programmiersprachen übrigens auch so ;-)

        Viele Grüße,
          ~ Dennis.

        1. hallo nochmal,

          ich habe nun versucht, diesen "oster-generator" zu schreiben.
          Dafür habe icha uf Seite 1 folgendes geschreiben:

          <html>
          <body>
          <form action="index.php" method="post">Jahr
          <input type="text" name="jahr" />
          <input type="submit" value="abschicken" />
          </body>
          </html>

          und index.php:

          <?php
          $jahr=$_Post['jahr'];

          $A= $jahr % 19;
          $B= floor($jahr / 100);
          $C= $jahr % 100;
          $D= floor($B / 4);
          $E= $B % 4;
          $F= floor(($B/8)/25);
          $G= floor((($B-$F)+1)/3);
          $h= (((($A*19)+$B)+15)-$A)-$G;
          $H= $h % 30;
          $I= floor($C / 4);
          $J= $c % 4;
          $k= (((($E+$I)*2)+32)-$H)-$J;
          $K= $k % 7;
          $l= ((($K*2)+$H)*11)+$A;
          $L= floor($l / 451);
          $m= ($H+$K+114)-($L*7);
          $M= floor($m/31);
          $N= ($m % 31)+1;

          echo "$N+1";
          if ($M= '3'){echo '.März';}
          else {echo '.April';}
          ?>

          Wenn ich das hochlade kommen keine Fehlermeldungen, aber dennoch funktioniert das nicht. Ich weiß, da sind einige Klammern, die man nicht machen muss, aber damit ich es besser nachvollziehen kann, habe ich sie trotzdem hibgeschrieben.

          Kann mir jemand sagen, was ich falsch gemacht habe, bzw. mir zumindest einen tipp geben?

          Hier nochmal der Link von meiner Rechung: http://www.arndt-bruenner.de/mathe/scripts/osterdatum.htm

          Vielen Dank
          Volker

          1. Hallo,

            ich habe nun versucht, diesen "oster-generator" zu schreiben.
            Dafür habe icha uf Seite 1 folgendes geschreiben:

            » <?php  
            
            > $jahr=$_Post['jahr'];
            
            

            das superglobale Array, dass Du ansprechen willst, heißt $_POST, nicht $_Post.
            Das Umkopieren ist völlig überflüssig, eine Überprüfung auf einen Integerwert wäre es nicht.

            Kann mir jemand sagen, was ich falsch gemacht habe, bzw. mir zumindest einen tipp geben?

            Variablen durchzubuchstabieren ist genauso wenig eine gute Idee wie Variablen einfach durchzunumerieren. Gib Variablen einen sinnvollen Namen und kommentiere Deinen Code sinnvoll.

            Freundliche Grüße

            Vinzenz

          2. Hi!

            Wenn ich das hochlade kommen keine Fehlermeldungen, aber dennoch funktioniert das nicht.

            "Funktioniert nicht" funktioniert nicht als Fehlerbeschreibung, da "funktioniert nicht" in vielfältiger Ausführung vorkommen kann. Welche genau ist es bei dir? Also: Wo erwartest du welche Werte und was bekommst du stattdessen? Dass man mit Hilfe von Kontrollausgaben sich die Zwischenergebnisse der Berechnungsschritte anzeigen lassen kann, weißt du? Ebenfalls als nützlich erweist es sich, wenn man beim PHP-Programmieren das error_reporting auf E_ALL stellt (und display_errors auf on), damit man sämtliche Meldungen und Hinweise angezeigt bekommt.

            Lo!