Die heute vergangen Sekunden in PHP
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
ausgeben
auslese
besucher
code
date
datum
ergebnis
glauben
kluger kopf
leute
monat
problem
sagen
sekunde
sommerzeit
stunde
stunden
tag
teddy
url
-
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? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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. -
Er meint sowas:
$secs = date('H') * 3600 + date('i') * 60 + date('s'); // $secs enthält die Sekunden seit Mitternacht echo($secs);
-
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 */
-
danke hackyourlive und nils
-
Hallo
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 -
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 -
nico23 schrieb:
klingt ja gut doch was ist jetzt richtig? ...
also das verdient wirklich etwas mehr zuwendung! daher habe ich das hier getan und jetzt sollte ein jeder daraus sein konsequenz ziehen:
die ausgabe ist:<?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;
jetzt : 3270
dann etwas später hat es sich ergeben:
jetzt2: 82470 ** 23:54:30
jetzt3: 86070 ** 00:54:30
method4: 3270
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 -
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 -
Hallo
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
document.write(new Date());
^ das gibt jedenfalls das Datum aus, vielleicht hilfts ja
mfg
-
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. -
voloya schrieb:
Hallo
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?
mfg
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. -
Hallo
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 .
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.
mfg -
voloya schrieb:
Da müsste man ja alle 6 Monate den Code ändern .
mfg
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ü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 -
hemiolos schrieb:
Ganz einfach, warum das nicht funktioniert.
(ich habe meine meinug gebilden und ... ) was denken jetzt die klugen köpfe????
Zur Ausgabe verwendet ihr die Funktion
und übergebt ein UNIX-Timestamp (eure Sekunden seit Mitternacht).date()
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:
Damit wird ganz sicher keine Zeitzone berücksichtigt...$secs = Sekunden seit Mitternacht; $s = $secs % 60; $m = ($secs / 60) % 60; $h = ($secs / 3600) % 60; printf('%02d:%02d:%02d', $h, $m, $s);
-
hackyourlife schrieb:
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?
...Damit wird ganz sicher keine Zeitzone berücksichtigt...
bei dir ist ja die lage dahingehend ganz anders, dass du die sache - sozusagen - zu fuß löst. -
hemiolos 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.
hackyourlife schrieb:
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?
...Damit wird ganz sicher keine Zeitzone berücksichtigt...
bei dir ist ja die lage dahingehend ganz anders, dass du die sache - sozusagen - zu fuß löst. -
hackyourlife schrieb:
mal sehen die vorigen 3 methoden:
... 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.
das ergebnis:<?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 );
time1 : 58556 ** 16:15:56 [richtig]
wenn ichs umgekehrt mache, so:
time2 : 51356 ** 14:15:56 [falsch]
time3 : 54956 ** 15:15:56 [falsch]
dann das ergebnis ist aber:<?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 );
time1 : 51772 ** 15:22:52 [falsch]
so. und wie gehts weiter? das ist auch alle fälle jede menge inkonsistenz und dem manual nicht entsprechend.
time2 : 51772 ** 15:22:52 [falsch]
time3 : 55372 ** 16:22:52 [richtig]
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage