kostenloser Webspace werbefrei: lima-city


Die heute vergangen Sekunden in PHP

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    nico23

    nico23 hat kostenlosen Webspace.

    Hat jemand ne Idee wie ich die Zeit bekommen in tag/sekunde">Sekunden die jeden tage vergangen ist. Jeder Tage wieder neu kein timestamp.

    Also da sind jede menge php Funktionen for tag und datum und da ist der unix timestamp und ich denke das ist ne einfach zu lösende aufgabe aber ich komm einfach nicht drauf!

    Can somebody helf me out?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. Was immer du jetzt auch willst.
    Sekunden die jeden Tag vergehen: 86400 (60 Sek.* 60 Min.* 24Std...)
    den Unix-Zeitstempel erhälst du mit time();

    Sonst: Schreib deine Frage verständlich.
  4. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Er meint sowas:
    $secs = date('H') * 3600 + date('i') * 60 + date('s');
    // $secs enthält die Sekunden seit Mitternacht
    echo($secs);
  5. Schau dir mal gettimeofday () an.

    ODER

    $datum = getdate ( time() );
    
    $sec = $datum[seconds] + $datum[minutes] * 60 + $datum[hours] * 60 * 60 /* 1. * 60 Minuten 2. * 60 Sekunden */
  6. Autor dieses Themas

    nico23

    nico23 hat kostenlosen Webspace.

    danke hackyourlive und nils
  7. Hallo :wave:

    nico23 schrieb:
    Hat jemand ne Idee wie ich die Zeit bekommen in Sekunden die jeden tage vergangen ist. Jeder Tage wieder neu kein timestamp.


    Da müsstest du doch einfach den timestamp durch 86400 teilen und den Rest ausgeben, oder? :) Das kann man mit "modulo" machen.

    Also:
    $ts = time();
    $tv = $ts % 86400;


    Oder so ähnlich zumindest :)

    mfg :wave:
  8. voloya schrieb:
    ... Oder so ähnlich zumindest :)
    genau ;)
    $tv = (time() % 86400) + 3600;
  9. Autor dieses Themas

    nico23

    nico23 hat kostenlosen Webspace.

    klingt ja gut doch was ist jetzt richtig?

    denn:
    $jetzt = date('H') * 3600 + date('i') * 60 + date('s');
    $jetzt2 = (time() % 86400) + 3600;
    
    echo "<br>$jetzt<br>$jetzt2<br>";


    ergab grad bei mir:
    86033
    82433

    nr 1 ist richtig denk ich mal und bei nr2 fehlt noch was.

    Beitrag zuletzt geändert: 16.4.2012 23:55:55 von nico23
  10. nico23 schrieb:
    klingt ja gut doch was ist jetzt richtig? ...
    :megarofl:
    also das verdient wirklich etwas mehr zuwendung! daher habe ich das hier getan und jetzt sollte ein jeder daraus sein konsequenz ziehen:
    <?php
    error_reporting(E_ALL | E_STRICT);
    
    date_default_timezone_set('Europe/Berlin');
    
    $t      = time();
    $jetzt1 = date('H') * 3600 + date('i') * 60 + date('s');
    $jetzt2 = ($t % 86400);
    $test1  = date('H:i:s', $jetzt2);
    $jetzt3 = ($t % 86400) + 3600;
    $test2  = date('H:i:s', $jetzt3);
    
    $tv4 = $t - mktime(0,0,0, date('m'), date('d'), date('Y'));
    
    
    echo <<< EOT
    <pre>
    jetzt  : $jetzt1
    jetzt2 : $jetzt2 ** $test1
    jetzt3 : $jetzt3 ** $test2
    method4: $tv4
    </pre>
    EOT;
    die ausgabe ist:
    jetzt : 3270
    jetzt2: 82470 ** 23:54:30
    jetzt3: 86070 ** 00:54:30
    method4: 3270
    dann etwas später hat es sich ergeben:
    jetzt : 11005
    jetzt2 : 3805 ** 02:03:25
    jetzt3 : 7405 ** 03:03:25
    method4: 11005

    zusammengefasst:
    bei voloya ist die zeit (jetzt2) eine stunde davor und die sekunden daneben
    bei mir ist die zeit (jetzt3) zwar richtig, dafür die sekunden noch schlimmer daneben :))
    (method4 habe ich nur für testzwecke hinzu getan)

    (ich habe meine meinug gebilden und ... ) was denken jetzt die klugen köpfe????

    Beitrag zuletzt geändert: 17.4.2012 3:04:24 von hemiolos
  11. hemiolos
    zusammengefasst:
    bei voloya ist die zeit (jetzt2) eine stunde davor und die sekunden daneben
    bei mir ist die zeit (jetzt3) zwar richtig, dafür die sekunden noch schlimmer daneben :))


    Ich glaube das Problem ist die Sommerzeit. Mit Sommerzeit ist Berlin nämlich GMT+2 und nicht +1.

    <?php
    define("NL","<br />");
    date_default_timezone_set('Europe/Berlin');
    echo "Berlin:".NL;
    echo "-> Kontrollzeit: ".date("H:i:s").NL;
    echo "-> date('H') * 3600 + date('i') * 60 + date('s'): ".(date('H') * 3600 + date('i') * 60 + date('s').NL);
    $t=time();
    echo '-> ($t + 3600*2) % 86400: '.(($t + 3600*2) % 86400).NL;
    
    date_default_timezone_set('GMT');
    echo "GMT:".NL;
    echo "-> Kontrollzeit: ".date("H:i:s").NL;
    echo "-> date('H') * 3600 + date('i') * 60 + date('s'): ".(date('H') * 3600 + date('i') * 60 + date('s').NL);
    $t=time();
    echo '-> $t % 86400: '.($t % 86400).NL;
    
    ?>


    Ergibt:
    Berlin:
    -> Kontrollzeit: 06:41:20
    -> date('H') * 3600 + date('i') * 60 + date('s'): 24080
    -> ($t + 3600*2) % 86400: 24080
    GMT:
    -> Kontrollzeit: 04:41:20
    -> date('H') * 3600 + date('i') * 60 + date('s'): 16880
    -> $t % 86400: 16880
  12. Hallo :wave:

    Ahso scheint als gibt time() die GMT+0 Zeit aus, wir sind aber GMT+1. Das ist natürlich unpraktisch wenn Leute von einer anderen Zeitzone auf die Webseite kommen, aber natürlich sprechen im Rest der Welt nicht ganz so viele Leute deutsch. Und es hängt auch davon ab was du denn genau damit machen willst.

    Da PHP eine serverseitige Programmiersprache ist kannst du damit glaube ich nicht die Zeit der Clients auslesen, aber das geht mit Javascript.

    $jetzt = (time() % 86400) + 3600;

    ^
    Das stimmt dann aber auch nicht, denn wenn man zum Beispiel um 23:59 Uhr dieses Skript aufruft wird als Zeit etwas mit mehr als 86400 Sekunden angezeigt.

    Man müsste also:

    $zeit = (time() + 3600);  //Timestamp für GMT+1
    $sekunden = $zeit % 86400; //Sekunden, die am heutigen Tag vergangen sind


    Wie das mit der Sommerzeit ist weiß ich nicht. Habe gerade gesehen, dass da noch ein Post geschrieben wurde.


    --> die Zeit mit Javascript auszulesen erledigt das Problem. Leider habe ich keine Ahnung von Javascript :biggrin:
    document.write(new Date());

    ^ das gibt jedenfalls das Datum aus, vielleicht hilfts ja

    mfg :wave:


  13. Ich denke nicht, dass ich ein Kluger Kopf bin, aber ich sage:

    gmstrftime()


    <?php 
    setlocale(LC_TIME, 'de_DE'); 
    $deutsche_zeit = gmstrftime("%d %B %Y - %H:%M uur",time()+3600); 
    echo $deutsche_zeit;
    ?>


    Wobei die +3600 die anzahl der Stunden quasi GMT beschreibt zum Beispiel GMT +1 wäre eben 3600, GMT +2 7200 usw.
  14. Hallo :wave:

    kill-a-teddy schrieb:
    Ich denke nicht, dass ich ein Kluger Kopf bin, aber ich sage:

    gmstrftime()


    Hmm dann müsste time() ja eigentlich die richtige Zeit ausgeben? Hat also doch etwas mit Sommerzeit zu tun? :biggrin:

    mfg :wave:
  15. voloya schrieb:
    Hallo :wave:

    kill-a-teddy schrieb:
    Ich denke nicht, dass ich ein Kluger Kopf bin, aber ich sage:

    gmstrftime()


    Hmm dann müsste time() ja eigentlich die richtige Zeit ausgeben? Hat also doch etwas mit Sommerzeit zu tun? :biggrin:

    mfg :wave:


    Jein.. gmstrftime() kann lediglich eine Zeitangabe mit GMT formatieren... Sommerzeit kann man aber auch mit rein nehmen, wenn man drüber nach denkt ist es ja recht logisch.. Einfach eine Stunde dazu Rechnen :) Demnach wäre GMT+1 Sommerzeit = 7200 Sek. Und GMT+1 Winterzeit = 3200 Sek.
  16. Hallo :wave:

    kill-a-teddy schrieb:
    Sommerzeit kann man aber auch mit rein nehmen, wenn man drüber nach denkt ist es ja recht logisch.. Einfach eine Stunde dazu Rechnen :)


    Da müsste man ja alle 6 Monate den Code ändern :biggrin: .

    Man könnte zuerst das momentane Datum ausrechnen lassen und dann, je nach Datum, entweder eine oder zwei Stunden hinzu addieren. Da das berechnete Datum aber auch keine Sommerzeit beinhaltet müsste man bei der Angabe ab wann die Winterzeit wieder verwendet werden soll eine Stunde a...ddieren.

    Fiel mir grad so spontan ein.. das dürfte das Problem doch lösen, oder? Allerdings auch nur für Leute mit MEZ. Wenn man das an jeden Besucher angepasst anzeigen will müsste man die Zeit beim Client mit Javascript auslesen.

    Falls der Besucher Javascript deaktiviert hat dann.. öööh.. berechnet man die Zeitzone je nachdem aus welchem Land die IP-Adresse des Surfers kommt. :biggrin:

    mfg :wave:
  17. voloya schrieb:
    Da müsste man ja alle 6 Monate den Code ändern :biggrin: .
    mfg :wave:


    Generell nein..

    //Jahreszeit ermitteln
    $m=date("m"); 
    $d=date("d"); 
    if ($m < 3 OR ($m == 3 AND $d < 20) OR ($m == 12 AND $d > 20)) $jz= 1; 
    elseif ($m < 6 OR ($m == 6 AND $d < 21)) $jz=2; 
    elseif ($m < 9 OR ($m == 9 AND $d < 23)) $jz=3; 
    else $jz=4; 
    
    $jahreszeit=Array("Fehler", "Winter", "Fr&uuml;hling","Sommer", "Herbst"); 
    
    echo "Der $d.$m. liegt im $jahreszeit[$jz]";
    
    //Jahreszeit in Sommer-Winterzeit verpacken
    if ($jahreszeit[$jz] == Herbst || Winter) {
    Eine Stunde weg rechnen
    }
    // else eine Stunde dazu rechnen


    Der Code sollte nicht verwendet werden, da er nur ein Beispiel darstellt, wie man das lösen KÖNNTE... Es ist allerdings sehr ungenau.. Eine weitere Möglichkeit ist eben das Datum zu prüfen Wenn date() = Tag, andem man Uhr umstellt dann +1 Stunde else nichts machen bzw. eine Stunde weg..

    ---------------------------------

    Im übrigen hat das aber nichts mehr, mit der eigentlichen Frage zu tun. Er wollte, so wie ich das sehe eine Sekunden-Ausgabe ohne timestamp. Das könnte man wieder mit date() lösen, mit der Sekunden Variable oder einfach einen Zähler, der jede Sekunde +1 rechnet (Intervall ist das Stichwort) ODER einfach die Sekunden pro Tag angeben (86400 S.) ODER indem mit der time / date Varriante via der Day Variable geprüft wird, ob schon der nächste Tag ist, wenn ja eine Variable mit den Sekunden füllen und irgendwas damit machen...

    Noch mehr Möglichkeiten:
    - UDP (lokale Zeit auf dem Server) Zeit angeben
    - "Wecker" Programmieren, der alle x Intervalle (jede Sekunde) die Zahl in der Variable erhöht und bei einem gewissen limit wieder von 0 anfängt... Limit wäre dann z.B. 86400
    - Fertige Scripte Googeln...


    Damit wären genug Möglichkeiten genannt, das Projekt zu realisieren, jetzt sollte sich der Ersteller mal hinsetzen und ein bisschen Recherchieren, ich hab ja nun Denkansätze gegeben und fertige Scripts findet man eben überall im Netz. ;)


    Beitrag zuletzt geändert: 17.4.2012 9:51:29 von kill-a-teddy
  18. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    hemiolos schrieb:
    (ich habe meine meinug gebilden und ... ) was denken jetzt die klugen köpfe????
    Ganz einfach, warum das nicht funktioniert.
    Zur Ausgabe verwendet ihr die Funktion
    date()
    und übergebt ein UNIX-Timestamp (eure Sekunden seit Mitternacht).
    Die berechneten Sekunden stimmen also zumindest bei meiner Variante sicher, bei der Ausgabe mit date() wird aber von der Funktion die Zeitzone berücksichtigt.

    Um die Sekunden richtig auszugeben kann folgender Code verwendet werden:
    $secs = Sekunden seit Mitternacht;
    $s = $secs % 60;
    $m = ($secs / 60) % 60;
    $h = ($secs / 3600) % 60;
    printf('%02d:%02d:%02d', $h, $m, $s);
    Damit wird ganz sicher keine Zeitzone berücksichtigt... :biggrin:
  19. hackyourlife schrieb:
    ...Damit wird ganz sicher keine Zeitzone berücksichtigt... :biggrin:
    da hast du wohl recht. NUR. ich verwende die funktion date_default_timezone_set('Europe/Berlin');, die laut php.net seit 5.x sowieso pflicht ist und angeblich genau dafür sorgt, dass die zeitzone garantiert von allen date-time funktionen zum zug kommt. ??¿¿ was nun?
    bei dir ist ja die lage dahingehend ganz anders, dass du die sache - sozusagen - zu fuß löst.
  20. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    hemiolos schrieb:
    hackyourlife schrieb:
    ...Damit wird ganz sicher keine Zeitzone berücksichtigt... :biggrin:
    da hast du wohl recht. NUR. ich verwende die funktion date_default_timezone_set('Europe/Berlin');, die laut php.net seit 5.x sowieso pflicht ist und angeblich genau dafür sorgt, dass die zeitzone garantiert von allen date-time funktionen zum zug kommt. ??¿¿ was nun?
    bei dir ist ja die lage dahingehend ganz anders, dass du die sache - sozusagen - zu fuß löst.
    Du müsstest als Zeitzone UTC angeben, aber nur beim Ausgeben mit date(). Während dem Berechnen der Sekunden muss aber die normale Zeitzone gesetzt sein.
  21. hackyourlife schrieb:
    ... Du müsstest als Zeitzone UTC angeben, aber nur beim Ausgeben mit date(). Während dem Berechnen der Sekunden muss aber die normale Zeitzone gesetzt sein.
    mal sehen die vorigen 3 methoden:
    <?php
    error_reporting(E_ALL | E_STRICT);
    
    date_default_timezone_set('Europe/Berlin');
    $now   = time();
    $time1 = date('H') * 3600 + date('i') * 60 + date('s');
    $time2 = ($now % 86400);
    $time3 = ($now % 86400) + 3600;
    
    date_default_timezone_set('UTC');
    $t1 = date('H:i:s', $time1);
    $t2 = date('H:i:s', $time2);
    $t3 = date('H:i:s', $time3);
    $t4 = date('H:i:s', $time4);
    
    exit(<<< EOT
    <pre>
    time1 : $time1 ** $t1
    time2 : $time2 ** $t2
    time3 : $time3 ** $t3
    </pre>
    EOT
    );
    das ergebnis:
    time1 : 58556 ** 16:15:56 [richtig]
    time2 : 51356 ** 14:15:56 [falsch]
    time3 : 54956 ** 15:15:56 [falsch]
    wenn ichs umgekehrt mache, so:
    <?php
    error_reporting(E_ALL | E_STRICT);
    
    date_default_timezone_set('UTC');
    $now   = time();
    $time1 = date('H') * 3600 + date('i') * 60 + date('s');
    $time2 = ($now % 86400);
    $time3 = ($now % 86400) + 3600;
    
    date_default_timezone_set('Europe/Berlin');
    $t1 = date('H:i:s', $time1);
    $t2 = date('H:i:s', $time2);
    $t3 = date('H:i:s', $time3);
    $t4 = date('H:i:s', $time4);
    
    exit(<<< EOT
    <pre>
    time1 : $time1 ** $t1
    time2 : $time2 ** $t2
    time3 : $time3 ** $t3
    </pre>
    EOT
    );
    dann das ergebnis ist aber:
    time1 : 51772 ** 15:22:52 [falsch]
    time2 : 51772 ** 15:22:52 [falsch]
    time3 : 55372 ** 16:22:52 [richtig]
    so. und wie gehts weiter? das ist auch alle fälle jede menge inkonsistenz und dem manual nicht entsprechend.
  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!