+ Antworten
Seite 2 von 4 ErsteErste 1 2 3 4 LetzteLetzte
Ergebnis 11 bis 20 von 38
  1. #11
    Registriert seit
    Aug 2008
    Ort
    Sereetz
    Beiträge
    1,649

    Negative Werte rechnet mktime korrekt um. Ist zwar nicht direkt in der Doku beschrieben, aber ein Beispiel dort hat -31 Tage drin. Die Variante von sysrun ist natürlich auch schön und kürzer.
    Horst

  2. #12
    Registriert seit
    Nov 2008
    Ort
    Heidelberg
    Beiträge
    580

    Hallo,

    ich bräuchte nochmal Hilfe :-)

    Im Script unten werte ich im oberen Teil aus, ob heute jemand Geburtstag hat - das funktioniert auch superklasse!

    Problem: ich möchte mir in eine separate Stringvariable schreiben, wer als nächstes Geburtstag hat - mitsamt der Differenz in Tagen. Ein Codeschnipsel habe ich im unteren Teil, dieser gibt z.B. die Differenz in Tagen zu einem Referenzdatum aus....aber wie kann ich das obere Array so auswerten, dass mir der nächste anstehende Geburtstag z.B. in der Form "Noch 4 Tage: Herbert" ausgegeben wird?

    Vielen Dank schonmal für Eure Hilfe!!!

    PHP-Code:
    <?php
        $geburtstage 
    = array("1-5-2000" => "Franz",
                            
    "30-6-1984" => "Herbert",
                            
    "30-12-1987" => "Atze");
        
    $datum getdate(time());
        foreach (
    $geburtstage as $geburtstag => $name)
            {
            
    $geburtstag split("-"$geburtstag);
                if (
    $datum["mday"] == $geburtstag[0] and $datum["mon"] == $geburtstag[1])
                    {
                    echo 
    "Heute hat ".$name." Geburtstag! <br />"."\n";
                    
    SetValueString(41693 /*[Geburtstage\Geburtstag Heute]*/"$name");
                    }
                    else
                        {
                       
    SetValueString(41693 /*[Geburtstage\Geburtstag Heute]*/"--");
                       }
             }
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
       
    $datum1 "20-11-2009";
        
    $datum2=date("d-m-Y",strtotime("-10 day",strtotime($datum1)));
        echo 
    "$datum2"
    ?>
    Gruß
    dreamy1

  3. #13
    Registriert seit
    Nov 2008
    Ort
    Heidelberg
    Beiträge
    580

    Hmm, keiner von den PHP-Freaks eine Idee?
    Gruß
    dreamy1

  4. #14
    Registriert seit
    Nov 2008
    Ort
    Heidelberg
    Beiträge
    580

    Kann wirklich niemand helfen....?

    Das Array mit den Geburtstagen liegt nach Datum sortiert vor (der erste Geburtstag im Januar steht also ganz oben und der letzte im Dezember an letzter Stelle des Arrays).

    Man müsste wohl das Array mit dem Vergleich des aktuellen Tages durchlaufen lassen...oder vielleicht auch anders :-)

    Ich stehe aufm Schlauch und das überfordert meine PHP-Kenntnisse leider um ein Vielfaches. Ich wäre wirklich sehr dankbar wenn mir da jemand eine Lösung präsentieren könnte - die Funktion ist doch sicher auch für andere interessant.

    Vielen Dank vorab!
    Gruß
    dreamy1

  5. #15
    Registriert seit
    Feb 2007
    Ort
    Zwickau
    Beiträge
    5,490

    PHP-Code:
    foreach($geburtstage as $datum => $name)
    {
      
    $datum         explode("-"$datum);
      
    $heute         cal_to_jd(0,date("m"),date("d"),date("y"));
      
    $geburtstag    cal_to_jd(0,$datum[1],$datum[0],date("y"));
      if(
    $heute<$geburtstag)
      {
        
    $diff $geburtstag-$heute;
        echo 
    $name." hat in ".$diff." Tagen Geburtstag.";
        return;
      }

    So sollte es funktionieren.
    MfG Thomas

    Eaton Xcomfort|FS20|1-Wire|Axis WebCams|WMRS200 Wetterstation|Funksystem-868|Gas und Wasserzähler per S0 1-Wire|E-Zähler per OKK+seriell2LAN Adapter|Amazon Alexa|
    Visu auf: 10"Touchscr.|Apple iPod Touch|Apple iPhone|Apple iPad|IPS V5.x|Dashboard|WebFront|iFront


  6. #16
    Registriert seit
    Mar 2008
    Ort
    NRW
    Beiträge
    313

    Hi dreamy1,
    versuchs mal so:

    PHP-Code:
      $geburtstage = array("1-5-2000" => "Franz",
                           
    "30-6-1984" => "Herbert",
                           
    "30-12-1987" => "Atze");
                           
      
    $now mktime(000date('n'), date('d'), date('Y'));

      foreach (
    $geburtstage as $geburtstag => $name) {
        
    $geburtstag split("-"$geburtstag);

        
    $GebTag mktime (000$geburtstag[1], $geburtstag[0], date('Y'));
        if (
    $GebTag $now) {
          
    $GebTag mktime (000$geburtstag[1], $geburtstag[0], date('Y')+1);
        }
        
        
    $Tage round(($GebTag $now) /60/60/24);
         
    //echo $Tage."\r\n";
        
        
    if ($Tage == '0') {
          echo 
    "Heute hat ".$name." Geburtstag! <br />"."\n";
          
    //SetValueString(41693 /*[Geburtstage\Geburtstag Heute]*/, "$name");
        
    } else {
          echo 
    "In ".$Tage" Tage hat ".$name." Geburtstag! <br />"."\n";
          
    //SetValueString(41693 /*[Geburtstage\Geburtstag Heute]*/, "--");
        
    }
      } 
    Grüße,
    Neon

  7. #17
    Registriert seit
    Nov 2008
    Ort
    Heidelberg
    Beiträge
    580

    @Ferengi-Master, Neon:

    Vielen vielen Dank, dass Ihr Euch die Mühe für mich gemacht habt!!!!! Ihr habt mir wirklich sehr geholfen.
    Gruß
    dreamy1

  8. #18
    Registriert seit
    Dec 2006
    Beiträge
    77

    Hallo neon,

    top Gesamtlösung.....

    wesseli

  9. #19
    Registriert seit
    Jun 2007
    Ort
    Hockenheim
    Beiträge
    1,798

    @ Neon

    Bekomme folgende Ausgabe :
    Deprecated: Function split() is deprecated in C:\IP-Symcon2\scripts\Geburtstage on line 9

    Es gibt zwar die richtige Info aus, aber was bedeutet die obige Meldung ?

    Gruss
    B71
    IP-Symcon V4.4,MAC mini mit Parallels 12 und W10 und PI 5.0 Testing,15" Touch Screen,iPADs,Sonos,FHZ1300,HM Gateways,Allnet 3691,USB-T 868,Homematic: 140 Instanzen, FS20: 6 Instanzen, Allnet: 1 Instanz

  10. #20
    Registriert seit
    Mar 2008
    Ort
    NRW
    Beiträge
    313

    Hallo B71,
    liegt wohl an Deiner PHP-Version (5.3.x).
    PHP: Deprecated features in PHP 5.3.x - Manual

    Ersetze mal "split" durch "explode" (s. Beispiel von Thomas), dann sollte es funktionieren.
    Grüße,
    Neon

Ähnliche Themen

  1. Antworten: 8
    Letzter Beitrag: 26.01.09, 14:05
  2. FS20 DI22 - Triac durch nach 2 Tagen?!
    Von sokkederheld im Forum Sonstige Funkkomponenten / Wetterstationen
    Antworten: 4
    Letzter Beitrag: 20.10.08, 23:52
  3. maximale Sensorenzahl und realisierbarkeit
    Von Stefan im Forum 1-Wire, M-BUS
    Antworten: 14
    Letzter Beitrag: 12.02.07, 11:30
  4. Leidige Thema IPS Absturz
    Von guyabano im Forum Allgemeine Diskussion
    Antworten: 48
    Letzter Beitrag: 06.04.06, 19:06