Nordmann: JavaScript in PHP umwandeln

Hallo zusammen,

ich möchte folgenden Javascript code in php umsetzen, komme aber irgenwie total nicht damit klar. Kann mir jemand von Euch hier bitte Helfen?!
Danke und noch einen schönen Sonntag für Euch!

<script type="text/javascript">
var VollmondText
 Heute  =  new Date();
 Heute.setTime(Heute.getTime() + (Heute.getTimezoneOffset()*60*1000));
 var blaueMondZeit = new Date(96, 1, 3, 16, 15, 0);
 var mondPeriode  = 29*(24*3600*1000) + 12*(3600*1000) + 44.05*(60*1000);
 var mondPhasenZeit = (Heute.getTime() - blaueMondZeit.getTime()) % mondPeriode;
 var Korrektur = (Heute.getTime() % 86400000);
 var Vollmond = Math.floor((mondPeriode-mondPhasenZeit+Korrektur)/(24*3600*1000))+1;
 if (Vollmond == 0) {VollmondText="<br> Heute ist Vollmond.<br><br>"}
 if (Vollmond == 1) {VollmondText="<br> Morgen ist Vollmond.<br><br>"}
 if (Vollmond > 2) {VollmondText="<br> Der nächste Vollmond ist in <b>" + Vollmond + "</b> Tagen.<br><br>"}
 document.write(VollmondText);
</script>

Ich möchte das das Script nicht unter auf der Client Seite läuft, sonder auf der Serverseite, deshalb der Act!

Gruß
Der Nordmann

  1. Guten Tag,

    ich möchte folgenden Javascript code in php umsetzen, komme aber irgenwie
    total nicht damit klar. Kann mir jemand von Euch hier bitte Helfen?!
    Danke und noch einen schönen Sonntag für Euch!

    Was hast du denn bisher getan, um das Skript in PHP neu zu schreiben?
    Die Datumsfunktionen bieten einen guten Einstieg.

    Gruß
    Christoph Jeschke

    --
    Zend Certified Engineer
    Certified Urchin Admin
    1. Im Augenblick stehe ich wie der Ochs vorm Tor.
      Bei den Berechnungen der Datum Formatierungen blick ich nicht durch.

      Heute.setTime(Heute.getTime() + (Heute.getTimezoneOffset()*60*1000));
       var blaueMondZeit = new Date(96, 1, 3, 16, 15, 0);

      var mondPeriode  = 29*(24*3600*1000) + 12*(3600*1000) + 44.05*(60*1000);
       var mondPhasenZeit = (Heute.getTime() - blaueMondZeit.getTime()) % mondPeriode;
       var Korrektur = (Heute.getTime() % 86400000);

      var Vollmond = Math.floor((mondPeriode-mondPhasenZeit+Korrektur)/(24*3600*1000))+1;

      Ich kenne mich da leider noch zu wenig aus, um die Sache in PHP umzusetzen.

      1. Hi,

        Im Augenblick stehe ich wie der Ochs vorm Tor.
        Bei den Berechnungen der Datum Formatierungen blick ich nicht durch.

        Das fuegt deiner urspruenglichen "Problembeschreibung" kaum etwas weiteres wissenwertes hinzu.

        Ich kenne mich da leider noch zu wenig aus, um die Sache in PHP umzusetzen.

        Dann analysiere zunaechst das JavaScript, so dass du das, was dieses macht, umgangssprachlich beschreiben kannst.
        Danach duerfte die Umsetzung in einer anderen Sprache dann auch leichter fallen.

        MfG ChrisB

        --
        „This is the author's opinion, not necessarily that of Starbucks.“
      2. Hi,

        Heute.setTime(Heute.getTime() + (Heute.getTimezoneOffset()*60*1000));
        var blaueMondZeit = new Date(96, 1, 3, 16, 15, 0);

        es nützt nicht, den Javascript-Code zu wiederholen, den Du durch PHP ersetzen willst, ohne weiter Deine Probleme zu konkretisieren. Ich nehme mal an, Du hast in der PHP-Doku inzwisch die fraglichen Methoden durchgelesen, also:
        time(), date(), mktime(), floor()?
        Wenn nicht, schlage ich vor, Du holst das nach, und fragst dann, was Du nicht verstanden hast.

        Gruesse, Joachim

        --
        Am Ende wird alles gut.
  2. Hallo Nordmann,
    ein paar kleine Erklärungen ...

    var blaueMondZeit = new Date(96, 1, 3, 16, 15, 0);

    der 3. Februar 1996 war Vollmond (sollte es zumindest sein, nach meinen Quellen war es der 4.2. gegen Mitternacht) Warum die Variable "blaueMondZeit" heißt ist aber rätselhaft. Ein Blue Moon ist etwas anderes.

    var mondPeriode  = 29*(24*3600*1000) + 12*(3600*1000) + 44.05*(60*1000);

    Die synodische Periode (die Zeitspanne zwischen zwei gleichen Mondphasen) im Mittel: 29 Tage, 12 Stunden, 44 Minuten

    var mondPhasenZeit = (Heute.getTime() - blaueMondZeit.getTime()) % mondPeriode;

    Heute - dem Bezugsvollmond % Umlaufzeit (jeweils in Millisekunden)

    var Korrektur = (Heute.getTime() % 86400000);

    getTime() liefert Millisekunden, weiterrechnen mit Tagen

    var Vollmond = Math.floor((mondPeriode-mondPhasenZeit+Korrektur)/(24*3600*1000))+1;

    Die Tage nach Vollmond ...

    Einem Astronomen dreht sich bei dieser Berechnung allerdings der Magen um. Aufgrund von Bahnschwankungen und der elliptischen Umlaufbahn des Mondes kann die Formel durchaus einen Tag daneben liegen. Ein Bezugsvollmond (siehe 3.2.96) der etwas näher am "heute" liegt reduziert den Fehler etwas.

    HTH

    Jochen

    --
    Kritzeln statt texten: Scribbleboard