kostenloser Webspace werbefrei: lima-city


modulo % Rechnung und Zahlensysteme (Rechnen mit Rest)

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    promohit

    promohit hat kostenlosen Webspace.

    Hallo
    grundsätzlich kapier ich das tag/re">Rechnen mit Rest grad garnicht

    ich möchte für einen Cache eine Ausgabe machen,
    in wie vielen Stunden und Minuten (und Sekunden) das nächste Update kommt

    $jetzeit = time();
    $startnextupdatezeit = ... // --- gespeicherte Zeit (timestamp) für nächstes Update

    $abstand_sec = ($startnextupdatezeit - $jetzeit);
    $abstand_min = ($abstand_sec / 60);
    $abstand_hrs = ($abstand_min / 60);

    $abstand_resthrs = round($abstand_hrs,2);
    $abstand_restmin = ($abstand_min % 60); // --- Rechnen mit Rest

    Bei einem Test mit Cache-Zeit alle 48 Stunden hab ich folgendes Ergebnis

    $abstand_resthrs => 47.75
    $abstand_restmin => 45

    ich dachte mit dem Operator % bekomme ich den Rest-Wert der Division
    also habe ich dort 7512345 (ungerundet) erwartet
    ... es kommt aber gleich die Zahl umgerechnet in Minuten ?!?!

    ok, hier bei Zeit-berechnung ja ganz nett,
    aber was mache ich wenn ich mal bei "normale" Zahlen mit Rest rechnen will
    z.B. Bei Preisen, bei denen 100% ja 100 ist und nicht wie bei Zeiten 100% gleich 60 ist
    ?!?!?!
    Rechnen mit Rest mit dem Operator % ??????? häää?

    Wann greift welches Zahlensystem? Urhzeit (60er) oder Normal (100er) ???
    Gibt es einen anderen Operator für modulo-Rechnen im 100er Zahlensystem ?

    klärt mich bitte mal auf ....
    Danke



  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hey ;)

    Deine Frage kann ich dir direkt nicht beantworten, da ich nicht genau verstehe, was du willst aber vil. kann ich dir in einem anderen Punkt helfen.

    ich dachte mit dem Operator % bekomme ich den Rest-Wert der Division
    also habe ich dort 7512345 (ungerundet) erwartet
    ... es kommt aber gleich die Zahl umgerechnet in Minuten ?!?!


    Weder die eine, noch die andere Aussage ist richtig...

    abstand_restmin = ($abstand_min % 60); // --- Rechnen mit Rest

    Was auch immer das ergibt, es wird definitiv eine Zahl zwischen 0 und 59 sein.

    Ich glaube, du hast die Modulo-Rechnung nicht ganz verstanden. Ich erkläre es dir mal mit niedrigen Zahlen:
    5 % 3 = 2.
    Warum?
    Weil 5 / 3 genau einmal teilbar ist, und dann 2 Rest hat.
    8 % 3 = 2.
    Warum?
    Weil 8 / 3 genau zwei mal teilbar ist, und dann 2 Rest hat.

    In PseudoCode sieht der Modulo-Algorithmus (für positive Zahlen) so aus:
    int modulo(int value, int mod) {
      while(value >= mod) {
        value -= mod; // Ziehe von value mod ab.
      }
    
      return value; // Liefert eine Zahl zwischen 0 und mod-1 zurück, falls value bei Funktionsaufruf > 0 war.
    }


    Ich hoffe du verstehst nun etwas besser, was Modulo macht.
    Restwert != Restliche Zeit berechnen.

    lg
    Sincer
  4. Autor dieses Themas

    promohit

    promohit hat kostenlosen Webspace.

    Hallo

    danke, also der Operator % gibt NICHT den Rest-Wert einer Division her
    sondern den Rest der Ausgangszahl, die bei maximalen vollen Teilern übrig bleibt
    oder wie sagt man das ... aber habs kapiert Danke Deinen BSPs


    aber wie komme ich an den Rest-Wert ran?

    BSP: 8 / 3 = 2.666666....
    wie kommr ich also an die 666666....

    BSP: 9 / 4 = 2.25
    wie kommr ich also an die 25

    mit $erg = explode(".",$zahl); .... und dann $erg[1] ???
    oder gibt es da einen anderen Operator ?


    und zur Zeit-Berechnung:
    wie erhalte ich aus zwei unterschiedlichen Timestamp-Werten den Abstand im Zeit-Format?
    also

    1311156606 und 1311144261
    Abstand: 12345 (in Sekunden)
    wie mache ich aus 12345 Sekunden sowas wie x Stunden und y Minuten und z Sekunden
    Danke





    Beitrag zuletzt geändert: 20.7.2011 12:13:17 von promohit
  5. Vielleicht helfen dir die Beiträge in diesem Thread weiter, vorallem der letzte Beitrag. Dort habe ich so ein ähnliches Problem ziemlich ausführlich erklärt. Es ging auch um die Umrechnung von Sekunden in Stunden, MInuten und Sekunden.

    Bei Fragen melde dich einfach.

    edit: und benutze in Zukunft bitte den [code]-Tag für Quellcode

    Beitrag zuletzt geändert: 20.7.2011 12:22:13 von alfr3d
  6. Also ersteres funktioniert so und anders gehts leider nicht:
    $nachkomma = x / y - floor( x / y );

    Das mit der Zeit funktioniert so:
    $zwischenw = $gesamtzeit;
    $sekunden = $gesamtsec % 60;
    $zwischenw = floor( $gesamtsec / 60 );
    $minuten = $zwischenw % 60;
    $stunden = floor( $zwischenw / 60 )


    @alfr3d:
    Jetzt hab ichs einmal geschrieben da schick ichs trotzdem ab.:tongue:
  7. promohit schrieb:
    ... in wie vielen Stunden und Minuten (und Sekunden) das nächste Update kommt
    mal an UNIX-Timestamp gedacht?
    lg
  8. Also wenn du einfach nur eine Zeitangabe, die du sekunden hast, umrechnen willst in die jeweiligen Minuten, Stunden, Tage etc. geht das recht einfach (wobei ich nicht garantiere, das es der schnellste oder gar effektivste weg ist, eher nicht) mit folgender Methode:

    $time = x #gesamtzeit in sekunden
    $seconds = $time % 60 #das ist die Sekundenangabe
    $time = ($time - $seconds) / 60 #da der rest subtrahiert wird, ergibt dies jetzt immer eine ganze zahl
    $minutes = $time % 60 #da wir im vorherigen schritt von sekunden in minuten umgerechnet haben, hier nun die minuten ^^
    $time = ($time - $minutes) / 60 #siehe 2 zeilen vorher
    $hours = $time % 24 # sind ja nur 24 Stunden pro tag, und nicht 60 ^^
    $time = ($time - $hours) / 24 #siehe 2 zeilen vorher

    usw. ich glaub ist verständlich was ich meine ^^

    Und allgemein zum %-Operator:

    Der Operator gibt dir immer den Rest raus, wie man es glaube ich in der 4. Klasse oder so noch gelernt hat.
    10 % 2 ist 0, da 2*5 = 2 + 0 gilt.... x % 2 = [0,1], da 2*y = x + [0,1] gilt... ich weiß nicht ob das jetzt viel verständlicher ist als die einfache aussage darüber -.- (mit [0,1] ist übrigens gemeint eine der beiden zahlen -.-)
  9. promohit schrieb:
    aber wie komme ich an den Rest-Wert ran?

    BSP: 8 / 3 = 2.666666....
    wie kommr ich also an die 666666....

    BSP: 9 / 4 = 2.25
    wie kommr ich also an die 25

    mit $erg = explode(".",$zahl); .... und dann $erg[1] ???
    oder gibt es da einen anderen Operator ?


    Also ich würde das so machen:
    $zahl = 3.123;
    $erg = $zahl - intval( $zahl );   //Das Ergebnis ist: 0.123

    Damit solltest du auch auskommen können...

    Alles andere braucht mehr Speicher.
    Wenn du aber wirklich nur die Zahl haben willst dann kannst du das so machen:
    $zahl = 3.123;
    $erg = $zahl - intval( $zahl );   //Das Ergebnis ist: 0.123
    while( intval( $erg  ) != $erg )    // Überprüfen ob $erg Nachkommastellen hat
    {
       $erg *= 10;   //Das Komma in $erg um einen nach rechts verschieben
    }

    Das ist so wie ich das machen würde, alle anderen Arten arbeiten mit Strings und da kann es bei der Umwandlung zu Fehlern kommen.

    Beitrag zuletzt geändert: 21.7.2011 17:19:49 von coder-0x1
  10. promohit schrieb:
    ... wie mache ich aus 12345 Sekunden sowas wie x Stunden und y Minuten und z Sekunden
    mit hexagesimal arithmetik. ja! mathe ist ein hund, daher: folgende niedliche classe von mir ist nichts für schwache nerven ;o)
    allerdings! es geht 'nur' bis 59:59:59 unterschied (das ist 215999 sec)! warum? ja da darf man selbständig darüber nachdenken, dass auch ihr was davon habt ;o) [streng genommen geht es ja natürlich noch weiter, weil die zeit hört bekannter weise nicht auf zu ticken, aber das ist dann auch nichts mehr für matheprofis mit stahlnerven! wagt sich wer daran????]
    und jetzt endlich die klasse:
    <?php
    
    $s = 1311144261;  // start
    $e = 1311156606;  // end
    
    // Hgm steht für hexagesimal
    $diff = new CHgmDiff($s, $e);
    echo $diff->res;
    
    // HgmDiff = hexagesimal diff
    class CHgmDiff {
      public $delta = null;
      public $res   = null;
      public $h     = null;
    
      public function __construct($start, $end) {
        $this->delta = $end - $start;
        if($this->delta > 215999) {
          $this->res = '60h oder mehr!';
          return;
        }
        $this->convert($this->delta, 0);
    
        // das ergebnis muss noch formatiert werden
        $this->res = substr(substr('0' . $this->h[0], -2) . ':' . $this->res, 0, -1);
      }
    
      // hier vird rekursiv konvertiert
      public function convert($left, $right) {
        if(is_int($left)) $left .= '.0';
    
        $aval      = explode('.', (string)($left / 60));
        $this->res = substr('0' . round(((string)'.'.$aval[1]) * 60), -2) . ':' . $this->res;
    
        if($aval[0] >= 60) {
          $this->convert($aval[0], $aval[1]);
        }
        $this->h[] = $aval[0];
      }
    
      public function __toString() {
        return '<pre>' . print_r($this, true) . '</pre>';
      }
    }


    no dann
    lg

    Beitrag zuletzt geändert: 22.7.2011 1:30:23 von hemiolos
  11. hemiolos schrieb:
    promohit schrieb:
    ... wie mache ich aus 12345 Sekunden sowas wie x Stunden und y Minuten und z Sekunden
    mit hexagesimal arithmetik. ja! mathe ist ein hund, daher: folgende niedliche classe von mir ist nichts für schwache nerven ;o)
    allerdings! es geht 'nur' bis 59:59:59 unterschied (das ist 215999 sec)! warum? ja da darf man selbständig darüber nachdenken, dass auch ihr was davon habt ;o) [streng genommen geht es ja natürlich noch weiter, weil die zeit hört bekannter weise nicht auf zu ticken, aber das ist dann auch nichts mehr für matheprofis mit stahlnerven! wagt sich wer daran????]
    und jetzt endlich die klasse:
    <?php
    
    $s = 1311144261;  // start
    $e = 1311156606;  // end
    
    // Hgm steht für hexagesimal
    $diff = new CHgmDiff($s, $e);
    echo $diff->res;
    
    // HgmDiff = hexagesimal diff
    class CHgmDiff {
      public $delta = null;
      public $res   = null;
      public $h     = null;
    
      public function __construct($start, $end) {
        $this->delta = $end - $start;
        if($this->delta > 215999) {
          $this->res = '60h oder mehr!';
          return;
        }
        $this->convert($this->delta, 0);
    
        // das ergebnis muss noch formatiert werden
        $this->res = substr(substr('0' . $this->h[0], -2) . ':' . $this->res, 0, -1);
      }
    
      // hier vird rekursiv konvertiert
      public function convert($left, $right) {
        if(is_int($left)) $left .= '.0';
    
        $aval      = explode('.', (string)($left / 60));
        $this->res = substr('0' . round(((string)'.'.$aval[1]) * 60), -2) . ':' . $this->res;
    
        if($aval[0] >= 60) {
          $this->convert($aval[0], $aval[1]);
        }
        $this->h[] = $aval[0];
      }
    
      public function __toString() {
        return '<pre>' . print_r($this, true) . '</pre>';
      }
    }


    no dann
    lg

    Es geht auch VIEL einfacher: ;-)
    function ParseTime( $sekunden )
    {
    	$jahre = intval( $sekunden / 31557600 ); // 60*60*24*365 + 60*60*6
    	$rest = $sekunden - $jahre * 31557600;
    	$wochen = intval( $rest / 604800 ); // 60*60*24*7
    	$rest -= $wochen * 604800;
    	$tage = intval( $rest / 86400 ); // 60*60*24
    	$rest -= $tage * 86400;
    	$stunden = intval( $rest / 3600 ); // 60*60
    	$rest -= $stunden * 3600;
    	$minuten = intval( $rest / 60 ); // 60
    	$rest -= $minuten * 60;
    	$sekunden = $rest;
    	// Das ganze als String verpacken und zurückgeben
    }

    Hab ich nicht getestet müsste aber zu 99,99% funktionieren.
  12. coder-0x1 schrieb:
    ... Hab ich nicht getestet müsste aber zu 99,99% funktionieren.
    99.99% ?? bist du statistiker?? also funktionieren tut schon, nur warum soll es einfacher sein? meine funktion (public function convert(...)) hat 6 zeilen code, die nicht nur berechnen was er braucht (nur stunden, minuten und secunden, und nicht die ganze sternzeit vom 'StarDreck' [kein druckfehler]) sondern formatieren auch die ausgabe. bei dir sehe ich 11 zeilen code, keine formatierung und keine rückgabe (gut! irgend etwas muss er ja auch machen, was wir bei deiner lösung natürlich als lerneffekt gutschreiben müssen ;o)

    lg

    p.s.: zum schluss kannst du noch nachdenken, warum deine lösung nicht hexagesimal rechnet?
  13. hemiolos schrieb:
    coder-0x1 schrieb:
    ... Hab ich nicht getestet müsste aber zu 99,99% funktionieren.
    99.99% ?? bist du statistiker??

    Ein wenig... ;-)
    hemiolos schrieb:
    also funktionieren tut schon, nur warum soll es einfacher sein?

    Weil es einfach nur auf Grundrechenarten beruht, die jeder, der die Grundschule abgeschlossen hat, verstehen kann.
    hemiolos schrieb:
    meine funktion (public function convert(...)) hat 6 zeilen code, die nicht nur berechnen was er braucht (nur stunden, minuten und secunden, und nicht die ganze sternzeit vom 'StarDreck' [kein druckfehler])

    Es ist übrigens die Planetenzeit, aber egal...
    Außerdem lege ich ein wenig ert auf Vollständigkeit...
    hemiolos schrieb:
    sondern formatieren auch die ausgabe. bei dir sehe ich 11 zeilen code, keine formatierung und keine rückgabe (gut! irgend etwas muss er ja auch machen, was wir bei deiner lösung natürlich als lerneffekt gutschreiben müssen ;o)

    lg

    p.s.: zum schluss kannst du noch nachdenken, warum deine lösung nicht hexagesimal rechnet?

    Weil sie nur mit der Anzahl der Sekunden rechnet?!?!
    Muss sie desswegen falsch sein?
  14. coder-0x1 schrieb:
    ...
    wie auch immer (bevor wir noch zu spammen anfangen ;o)
    wir vermissen allerding eine stellungnahme von @promohit!!?? es gibt da immerhin paar ansätze ...

    lg
  15. Autor dieses Themas

    promohit

    promohit hat kostenlosen Webspace.

    Hallo und Danke für die ausführliche Diskussion

    1) .... zum Rest:
    also so wie ich es verstanden habe, dann wären Lösungen für den Rest-Wert:

    $erg = $zahl - intval( $zahl );

    und / oder
    $nachkomma = $a / $b - floor( $a / $b );



    2 a) ... zum Zeit-Abstand zwischen zwei timestamps:

    die Funktion von coder-0x1 funktioniert, aber ich verstehe da was nicht

    warum bei Jahre // 60*60*24*365 + 60*60*6
    also 60*60*24*365 ist klar aber warum + 60*60*6
    365 Tage und 6 Stunden ?
    ... ist es nicht besser Schaltjahre zu erkennen, wenn ja dann 366 nehmen?
    ?
    BSP
    function schaltjahr($jahr){
    if(($jahr % 400) == 0 || (($jahr % 4) == 0 && ($jahr % 100) != 0))
       return TRUE;
    else
       return FALSE;
    }

    gibts dafür nicht auch ne date() Funktion, hab keine gefunden ?!

    EDIT: ok, das brauche ich aber garnicht, da mein Abstand meist unter 1 Jahr ist
    und dann wird's kompliziert, ...
    prüfen ob zwischen Start-Timestamp und End-Timestamp Schaltjahre liegen.
    wenn ja, wieviele und .. ach oje


    2 b) ...
    die Klasse von hemiolos funktioniert, aber ich verstehe da was nicht
    $this->delta = $end - $start;
        if($this->delta > 215999) {
          $this->res = '60h oder mehr!';
          return;
        }


    heisst ja, bei einem Abstand der größer als 60 Stunden ist, kommt diese Ausgabe.
    60 Stunden sind doch 2 Tage und 12 Stunden ( 60 / 24 = 2,5 )

    welchen Sinn macht da 60 Stunden? wäre es nicht Sinnvoll da mit 24 Stunden zu arbeiten
    um der Ausgabe ggf. noch Tage vorne anzufügen (falls erreicht) ?! (anstatt "60h oder mehr")
    oO:

    @yinan
    funktioniert auch, DANKE für das beispiel, hast nur die ; (Semikolon) vergessen :P
    $xtime = 93902; 
       $seconds = $xtime % 60; 
    
    $xtime = ($xtime - $seconds) / 60; 
       $minutes = $xtime % 60; 
    
    $xtime = ($xtime - $minutes) / 60; 
       $hours = $xtime % 24; 
    
    $xtime = ($xtime - $hours) / 24; 
       $days = $xtime % 7;




    Beitrag zuletzt geändert: 25.7.2011 8:52:00 von promohit
  16. promohit schrieb:
    ...
    2 b) ...
    die Klasse von hemiolos funktioniert, aber ich verstehe da was nicht
    $this->delta = $end - $start;
        if($this->delta > 215999) {
          $this->res = '60h oder mehr!';
          return;
        }


    heisst ja, bei einem Abstand der größer als 60 Stunden ist, kommt diese Ausgabe.
    60 Stunden sind doch 2 Tage und 12 Stunden ( 60 / 24 = 2,5 )

    welchen Sinn macht da 60 Stunden? wäre es nicht Sinnvoll da mit 24 Stunden zu arbeiten
    um der Ausgabe ggf. noch Tage vorne anzufügen (falls erreicht) ?! (anstatt "60h oder mehr")
    oO:
    ... bei einem Abstand der größer als 60 Stunden ist (sagst du) ... <==> $this->delta > 215999 (sage ich eine zeile davor)
    das heißt: größer als 59:59:59 (und nicht größer als 60!)

    ich höre einige schon laut schmunzeln - was! eine sekunde????
    ja! schon in den siebzigern (im vorigen jahrtausend!!) haben us-militärs raketen gesteuert mit computer. der programmierer (er bediente sich damals MASCHIENENSPRACHE, also KEIN ASSEMBLER!!!!) hat die 10-millionstel secunden gerundet und siehe da! das ziel wurde von hunderten meilen verfehlt (400-500! enorm). die haben damals an dem problem 5 jahre laboriert (jetzt darf ich schmunzeln ;o)

    weiters darf man sich die frage stellen: warum date, time und dateime, diese merkwürdige 'dreifaltigkeit'!!?? [und überhaupt binär, oktal, hexadezimal, hexagesimal und andere zahlensysteme ...] ich habe hier die time-variante genommen (weil du ja nach stunden-minuten-sekunden gefragt hast) und das hexagesimale-zeitrechnung(!) geht 3-stellig nun mal nur bis 59:59:59 :o( [oder ist man mathematisch etwas versierter]

    wenn es sich hier dafür interesse genug zeigt
    , mache ich einen eigenen thread auf, weil das hierher eigentlich nicht reingehört und weil das ganze hier den rahmen sprengen würde. es ginge dann um - wenn auch nur sehr rudimentär - zahlensysteme und - weil das allein nicht reicht(!) - um (mathematische)semiologie. (und das innerhalb von php UND mysql [wo auch einige so paar probleme mit zeit und datum haben].)

    also bei interesse melden, sonst wird nix verraten.

    lg
  17. Autor dieses Themas

    promohit

    promohit hat kostenlosen Webspace.

    Hallo

    upsala, ist da jemand ein bischen genervt von "dummen Fragen" ?! .... SORRY

    mir ist (war) schon klar, das 215999 eine Sekunte weniger als 60h ist
    ich hab das mit den 60h ja nur (der Einfachheit halber) übernommen,
    weil im Code ja auch steht '60h oder mehr!' ...

    es geht mir nur um die Frage: lässt sich die Klasse erweitern mit Tagen (Wochen, Monaten)

    ich will die Funktion (Klasse) ja auch garnicht schlecht machen, die ist echt prima,
    darum gehts auch garnicht, sondern um meinen Wunsch die zu erweitern.

    meine Idee ist ja lediglich das die 3-stellige Ausgabe (59:59:59) um Tage zu erweitern
    zu einer 4-Stelligen (oder mehr) ? also BSP (Tage:Stunden:Minuten:Sekunden) ...

    bei Stunden gibt es ja maximal 23
    und anstatt 24 dann Stunden=00 und den Tag um eins erhöhen
    nur als Idee

    das wäre für mich logisch (auch wenns vielleicht nicht der mathematischen Definition entspricht)
    denn bei Minuten (und Sekunden) gibts ja auch kein 60 als Wert
    sondern es wird 00 und das jeweilig voranstehende Segment (element) wird um 1 erhöht

    ok, das ist ein BREAK vom 60er System ins 24er (bei Wochen ins 7er, etc)

    mein Ziel ist ja "nur" den Besuchern auf einer Webseite zu sagen:
    .... noch x Tage und x Stunden und x Minuten und x Sekunden bis ...

    evtll sogar .. noch x Wochen und x Tage und x Stunden
    oder evtl sogar ... noch x Monate und evtl sogar .... noch x Jahre ... etc.
    (Monate wäre genug denn sonst kommt das Problem mit den Schaltjahren)

    also bitte nicht böse sein, wenn ich mich jetzt nicht für binär, oktal, hexadezimal, hexagesimal und andere zahlensysteme allzusehr interessiere, ich bin halt auch kein Mathematiker und nur auf der Suche nach User-freundlicher Ausgabe eines Zeit-Abstandes.
    Z.B. ... dieser Gutschein ist noch ... gültig oder ... das nächste Update kommt in ...
    oder ähnliche Infos.

    Danke also für den Lösungasanzatz mit der Klasse,
    und Entschuldigung bitte wenn meine Fragen und Ideen dazu etwas "blöd" sind,
    aber sie sind nunmal da ... und raus
    :o





    Beitrag zuletzt geändert: 25.7.2011 14:30:11 von promohit
  18. promohit schrieb:
    ... upsala, ist da jemand ein bischen genervt von "dummen Fragen" ?! .... SORRY
    i wo! ich bin nur froh, wenn ich nach meinen bescheidenen möglichkeiten helfen, zu etwas beitragen kann. (es gibt bei gott genug gebiete, wo ich mir nicht einmal zumute, die frage zu stellen ;o)

    ...
    ...
    also bitte nicht böse sein, wenn ich mich jetzt nicht für binär, oktal, hexadezimal, hexagesimal und andere zahlensysteme allzusehr interessiere
    ok. jetzt verstehe ich warum du ausdehnungslose entitäten mit intervallen verwechelst :o) auch das ist aber kein problem!

    obwohl du in diesem beitrag exakt stunden, minuten und sekunden wolltest (ich habe dich zu ernst genommen ;o), sehe ich ein, dass jemand seine meinung ändern kann. in diesem sinne werde ich die klasse so kompletieren: yyyy-mm-dd (W) HH:ii:ss [W zweistelliig optional] natürlich als INTERVALL :) zwischen start und end. WOBEI: es muss kalenderjahr, kalendermonat, kalenderwoche und kalendertag gelten!

    morgen werde ich die neue version veröffentlichen. vieleicht brauch noch jemand.
    damit ich hier dann auch fertig bin.

    lg
  19. Autor dieses Themas

    promohit

    promohit hat kostenlosen Webspace.

    hemiolos
    ok. jetzt verstehe ich warum du ausdehnungslose entitäten mit intervallen verwechelst


    und ich verstehe bei sowas nur Bahnhof :D ... naja ...

    wäre schön wenn Du die Klasse entsprechend erweitern kannst, dafür wäre (bin) ich dir sehr dankbar.

    im Zuge dieser Diskussion habe ich auch bemerkt, das ich mit Klassen in PHP auch kaum was blicke,
    also Funktionen mit Aufruf-Parameter und Rückgabe-Werte .. ok ... aber Klassen muss ich noch "lernen"
    scheint aber ein nützliches Konstrukt zu sein :oOo:

    gleich mal ne Fragde dazu (Klassen)

    woher weiss die Funktion public function __construct($start, $end)
    dass $start ) $s ist ( und $end = $e)
    ... mit new CHgmDiff($s, $e); wird ja an die Klasse übergeben, aber nicht (sichtbar) weiter an die Funktion?

    woher weiss die Funktion __toString() .... welche Parameter verwendet werden,
    da werden ja gar keine übergeben ?

    Fragen über Fragen, muss mich da erst einarbeiten
    Danke!
  20. promohit schrieb:
    ... wäre schön wenn Du die Klasse entsprechend erweitern kannst, dafür wäre (bin) ich dir sehr dankbar.
    ich habe es zwar für heute versprochen, aber erstens einmal alles kommt, zweitens einmal gamz anders, als erwartet :o) ich werde dich auf alle fälle benachrichtigen.

    ... auch bemerkt, das ich mit Klassen in PHP auch kaum was blicke, ...
    das wird dir helfen!

    ... scheint aber ein nützliches Konstrukt zu sein
    wohl wohl!

    gleich mal ne Fragde dazu (Klassen)
    woher weiss die Funktion public function __construct($start, $end)
    dass $start ) $s ist ( und $end = $e)
    ... mit new CHgmDiff($s, $e); wird ja an die Klasse übergeben, aber nicht (sichtbar) weiter an die Funktion?
    wenn du new sagst, dann wird eine klasse 'instantiiert', anders rum wird nach der klassendefinition ein objekt erzeugt. hat die klasse eine funktion __construct(...), wir diese gleich aufgerufen, dass da am anfang gleich was gscheites passiert.

    woher weiss die Funktion __toString() .... welche Parameter verwendet werden,
    da werden ja gar keine übergeben ?
    genau! __toString() ist eine 'leere' funktion, die du selbst dazu bringen musst, etwas nützliches zu machen. einzig wichtig bei der ist, dass sie unbeding einen string zurückgibt, wenn auch eine leere (was allerding nicht so nützlich wäre)!
    was das in dieser klasse macht, kannst sehen, wenn du statt
    $object = new CHgmDiff($s, $e);
    einfach
    echo $object = new CHgmDiff($s, $e);
    schreibst

    hiemit sind wir vom thema reichlich abgeglitten, hoffentlich kriegen wir nicht auf den deckel. wie gesagt: all das durchexerzieren

    lg

    Beitrag zuletzt geändert: 26.7.2011 23:09:05 von hemiolos
  21. Autor dieses Themas

    promohit

    promohit hat kostenlosen Webspace.

    oh ja, da hab ich viel zu lesen und rumprobieren ... Klasse!

    zu Zeitabstand zwischen zweit timestamps
    auch wenn Du diese Erweiterung nicht schreibst, ist ja nicht soooo wichtig,
    schön wäre es aber trotzdem,
    denn auch mit den anderen Vorschlägen bekomme ich nicht ganz ans Ziel


    EDIT:
    ach ... lustig was ich da gerade gefunden habe

    http://de2.php.net/manual/de/function.date-diff.php

    aber damit bekomme ich es auch nicht ganz richtig hin

    jetzt mach ich nen Trick: date_parse() und Start-Zeit-Werte abziehen ... :)

    $s = time();
    $e = ($s + (3600*24*367) + 120 + 11); 
    
    $diff = ( $e - $s); 
    
    $erg2 = date_parse(date("Y-m-d H:i:s", ($diff) ));
    
    // ------- minus  01.01.1970 ------- 
    $erg2['year'] = ($erg2['year'] - 1970); 
    $erg2['month'] = ($erg2['month'] - 1); 
    $erg2['day'] = ($erg2['day'] - 1); 
    
    echo "<pre>\r\n"; 
    print_r($erg2); 
    echo "</pre>\r\n";


    und das Ergebnis sieht ganz gut aus

    Array
    (
    [year] => 1
    [month] => 0
    [day] => 2
    [hour] => 1
    [minute] => 2
    [second] => 11
    ...
    }

    aber ob das so gut ist ... naja, scheint aber immerhin zu funktionieren.


    Beitrag zuletzt geändert: 31.7.2011 13:50:39 von promohit
  22. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!