Entwickler-Ecke

Programmiersprachen (Server) - PHP- Datum/ Uhrzeit erkennen


IhopeonlyReader - Fr 31.05.13 13:21
Titel: PHP- Datum/ Uhrzeit erkennen
Guten Tag,
ich würde gerne auf einer Seite die Uhrzeit (und ggf. das Datum) anzeigen lassen...
bis jetzt mach ich das so:

HTML-Dokument
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
<html>
<head>
<script language="JavaScript">
<!--
var Serverzeit = new Date("2013 May 31 13:04:11");
function UhrzeitAnzeigen()
{

  if(!document.all && !document.getElementById)
  {
    return;
  }
  
  var Stunden = Serverzeit.getHours();
  var Minuten = Serverzeit.getMinutes();
  var Sekunden = Serverzeit.getSeconds();
  Serverzeit.setSeconds(Sekunden+1);
     
  if(Stunden<=9)
  {
    Stunden = "0" + Stunden;
  }
  if(Minuten<=9)
  {
    Minuten = "0" + Minuten;
  }
  if(Sekunden<=9)
  {
    Sekunden = "0" + Sekunden;
  }
  Uhrzeitanzeige = Stunden + ":" + Minuten + ":" + Sekunden;
  if(document.getElementById)
  {
    document.getElementById("Uhrzeit").innerHTML = Uhrzeitanzeige
  }
  else if(document.all)
  {
    Uhrzeit.innerHTML = Uhrzeitanzeige;
  }
  setTimeout("UhrzeitAnzeigen()"1000);
}
//-->
</script>

<title>Uhrzeit</title>
</head>
<body onLoad="UhrzeitAnzeigen();">          
<span id="Uhrzeit"></span>
</body>
</html>

Nur leider muss ich hier immer oben das "aktuelle" Datum einfügen :/
gibt es eine Möglichkeit, dass der Server das sozusagen selbst ausführt und sobald ein User das aufruft, dass der Server die Uhrzeit von der Seite (die er selbst aufgerufen hat) in die PHP-seite des users schreibt?

P.S: ich habe keine Ahnung von PHP ;), das ganze soll nur zur Vereinheitlichung von einem Delphi-Programm dienen ;)

Moderiert von user profile iconChristian S.: PHP- in HTML-Tags geändert


Regan - Sa 01.06.13 10:29

Moin,

ja, das geht. Du verwendest die Funktion [url=http://php.net/manual/en/function.date.php]date[/url]. Der optimierte Code sollte so funktionieren (ungetestet):

HTML-Dokument
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
<html>
<head>
<script type="text/javascript">
<!--
var Serverzeit = new Date(
<?php echo date('y,n,j,G,i,s'); ?>);
function UhrzeitAnzeigen()
{

  if(!document.all && !document.getElementById)
  {
    return;
  }
  Uhrzeitanzeige = 
Serverzeit.format("hh:mm:ss");
  if(document.getElementById)
  {
    document.getElementById("Uhrzeit").innerHTML = Uhrzeitanzeige;
  }
  else if(document.all)
  {
    Uhrzeit.innerHTML = Uhrzeitanzeige;
  }
  setTimeout("UhrzeitAnzeigen()", 1000);
}
//-->

</script>
<title>Uhrzeit</title>
</head>
<body onLoad="UhrzeitAnzeigen();">          
<span id="Uhrzeit"></span>
</body>
</html>


Das Format für die format-Funktion findest du hier [http://blog.stevenlevithan.com/archives/date-time-format].

Viele Grüße
Regan


IhopeonlyReader - Sa 01.06.13 14:40

Danke Regan,
die gesuchte Zeile war:

HTML-Dokument
1:
var Serverzeit = New Date(<?php echo date('y,n,j,G,i,s'); ?>);                    

Deine Code funktioniert bei mir nicht :(
aber die "gesuchte Zeile" in mein Code eingebaut funktioniert wunderbar, so sieht es dann aus: (Diesmal auch mit Jahr etc.)

HTML-Dokument
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
<html>
<head>
<script language="JavaScript">
<!--
var Serverzeit = new Date(<?php echo date('y,n,j,G,i,s'); ?>);
function UhrzeitAnzeigen()
{

  if(!document.all && !document.getElementById)
  {
    return;
  }

  var Jahr = Serverzeit.getYear();
  var Monat = Serverzeit.getMonth();
  var Tag = Serverzeit.getDate();
  var Stunden = Serverzeit.getHours();
  var Minuten = Serverzeit.getMinutes();
  var Sekunden = Serverzeit.getSeconds();
  Serverzeit.setSeconds(Sekunden+1);
     
  if(Stunden<=9)
  {
    Stunden = "0" + Stunden;
  }
  if(Minuten<=9)
  {
    Minuten = "0" + Minuten;
  }
  if(Sekunden<=9)
  {
    Sekunden = "0" + Sekunden;
  }
  if(Tag<=9)
  {
    Tag = "0" + Tag;
  }
  if(Monat<=9)
  {
    Monat = "0" + Monat;
  }
  Uhrzeitanzeige = Tag + "." + Monat + "." + (Jahr+2000) + ", " + Stunden + ":" + Minuten + ":" + Sekunden;
  if(document.getElementById)
  {
    document.getElementById("Uhrzeit").innerHTML = Uhrzeitanzeige
  }
  else if(document.all)
  {
    Uhrzeit.innerHTML = Uhrzeitanzeige;
  }
  setTimeout("UhrzeitAnzeigen()"1000);
}
//-->
</script>

<title>Uhrzeit</title>
</head>
<body onLoad="UhrzeitAnzeigen();">          
<span id="Uhrzeit"></span>
</body>
</html>

P.S: ich muss halt nur alle Hundert Jahre das Jahr + 100 mehr nehmen, da das Jahr nur bis 99 angegeben wird, danach springt es wieder auf 0 ...
ob ich es auf (Jahr+2100) je ändern muss weiß ja wohl niemand, aber ich hoffe dass ich solange lebe :D
(Oder gibt's dafür auch irgendwelche "befehle"?)


jaenicke - So 02.06.13 08:56

Es gibt auch getFullYear als Javascript Funktion.

Das ist allerdings Blödsinn erst das Datum in einer Form zu formatieren, die dir nicht gefällt und dann die Bestandteile zu trennen und selbst zusammenzubasteln... :shock: (es sei denn du willst sie im Skript mal so und mal so formatieren oder damit weiterarbeiten)

Das liefert dir das gleiche direkt:

PHP-Quelltext
1:
<?php echo date('d:m:Y, H:i:s'); ?>                    


IhopeonlyReader - So 02.06.13 13:23

ok, ich werde die Function QuellcodeToDateTimeS so umbauen, dass es ein Array of String zurückliefert.. im jedem String steht jedes gefundene Datum ;)
QuellcodeToDateTime liefert entsprechend ein Array of TDateTime;
Es wird dann nach folgenden Formaten gesucht:
Zitat:

'dd.mm.yyyy hh:nn:ss'
'dd.mm.yy hh:nn:ss'
'yyyy-mm-dd hh:nn:ss'
'yy-mm-dd hh:nn:ss'
(alle m,d,h,n,s auch einzeln (falls z.B. 03 als 3 angezeigt wird)
sowie die Teile einzeln also, falls als "Format" auch nur ein TeilFormat angefordert wurde
(falls z.B. 'dd.mm.yyyy hh:nn:ss' als Format angefordert wird, wird nicht nach 'hh:nn:ss' etc. gesucht)


.. dass wäre eine gute Übung ;)


Regan - So 02.06.13 13:37

Hast du dir die Dokumentation für die Funktion durchgelesen? Sicherlich nicht, dann wüsstest du, dass du einfach ein Y für ein vierstelliges Datum verwenden könntest. Ich kann dir das lesen nicht abnehmen :nixweiss: Das würde dann so aussehen:

PHP-Quelltext
1:
<?php echo date('Y,n,j,G,i,s'); ?>                    


user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:

PHP-Quelltext
1:
<?php echo date('d:m:Y, H:i:s'); ?>                    

Das Problem hierbei: unterstützen das alle Browser? Ich konnte nur eine Dokumentation für Firefox [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date?redirectlocale=en-US&redirectslug=JavaScript%2FReference%2FGlobal_Objects%2FDate] finden, von der ich das letzte Format ausgewählt habe.


jaenicke - So 02.06.13 14:22

user profile iconRegan hat folgendes geschrieben Zum zitierten Posting springen:
Das Problem hierbei: unterstützen das alle Browser?
Das hat nichts mit dem Browser zu tun. Das Datum wird mit dem Code fertig formatiert vom Server geliefert.
JavaScript kann es im Browser leider in der Tat nicht von Hause aus formatieren, da braucht man Plugins, die es z.B. für jQuery für den Zweck gibt.


Regan - Mo 03.06.13 20:04

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconRegan hat folgendes geschrieben Zum zitierten Posting springen:
Das Problem hierbei: unterstützen das alle Browser?
Das hat nichts mit dem Browser zu tun.

Doch. Die format-Funktion von Date wurde über die Jahre angepasst. Vielleicht unterstützt nicht jeder Browser die neuste 1.5.3-Javascript-Version.