Čas v PHP

Programovacie jazyky, rady, poradňa...
IgiPoP
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 446
Registrovaný: 12 sep 2005, 8:17
Bydlisko: MT

Príspevok od používateľa IgiPoP »

zupanok napísal:pozri si ukážku, rozmery sú samozrejme nastaviteľné
a ak máš záujem stiahni si to hodz2.zip
tvoje flashove hodiny su tiez ovplyvnehe lokalnym casom, cize casom na masine, kde sa stranka zobrazuje.



javascript sice moc nemusim, ale nedalo mi to a urobil som script, ktory zoberie serverovy cas a zobrazi ho u uzivatela pri zohladneni jeho casovej zony. samozrejme po requeste sa znovu nacita serverovy cas a znova sa zacne pocitat od neho.
ma to iba jednu chybu a to JavaScriptovy setInterval, ktory reaguje na systemove hodiny. cize ak pocas behu stranky zmenim cas napr o hodinu do predu, tak uz spominana funkcia sa bude sanazit dohnat tuto hodinu. ak do zadu, cas na stranke na hodinu zastane. mozno sa to da nejako osetrit, ale ako som uz spominal, JavaScript moc nemusim.

dufam, ze to niekomu bude na nieco.

Kód: Vybrať všetko

// php subor
<?php 
preg_match("/^([+|\-]{1})([0-9]{2})([0-9]{2})$/",date("O"), $matches);
$minut = $matches[1].(((int)$matches[2]*60)+(int)$matches[3]); //*(int)($matches[1].1);
$GMT = date( "m d Y H:i:s", mktime( date("H"), date("i")-$minut) );
?>
<html>
<head>
  <title>Hodiny podla servera v kazdej casovej zony</title>
  <script type="text/javascript">
    var serverTimeString = "<?=$GMT ?>"; //"9 12 2006 13:48:15";  // mesiac den rok ....
    var serverTime = Date.parse(serverTimeString);
    serverTime = new Date(serverTime);

    var localTime = new Date();
    var localZone = localTime.getTimezoneOffset();

    serverTime.setMinutes(serverTime.getMinutes() - localZone );

    function showGoodTime()
    {
      serverTime.setSeconds(serverTime.getSeconds() + 1);
      var hours = serverTime.getHours().toString();
      if( hours.length == 1 )
        hours = "0" + hours; 
      var minutes = serverTime.getMinutes().toString();
      if( minutes.length == 1 )
        minutes = "0" + minutes; 
      var seconds = serverTime.getSeconds().toString();
      if( seconds.length == 1 )
        seconds = "0" + seconds;

      document.getElementById('clock').innerHTML = hours + ":" + minutes + ":" + seconds; 
    } 

  </script>
</head>
<body>
  <span id="clock"></span>
  <script type="text/javascript">
    showGoodTime();
    var ourInterval = setInterval("showGoodTime()", 1000);
  </script>
  </body>
</html>
//spojil audiotrack
zupanok
Medium Star
Medium Star
Príspevky: 325
Registrovaný: 19 dec 2005, 18:43
Bydlisko: MT

Príspevok od používateľa zupanok »

IgiPoP napísal:...tvoje flashove hodiny su tiez ovplyvnehe lokalnym casom, cize casom na masine, kde sa stranka zobrazuje...
úplná pravda, ospravedlňujem sa všetkým za moju neznalosť,
gwixt
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3912
Registrovaný: 24 sep 2005, 16:50
Bydlisko: Trash-Can

Príspevok od používateľa gwixt »

sakra, ja som pozeral manual k JS objektu Date a getTimezoneOffset() som si nevsimol ... omg :roll:
atlox
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 230
Registrovaný: 15 aug 2006, 0:31
Bydlisko: Poprad
Kontaktovať používateľa:

Príspevok od používateľa atlox »

Ľudia veď vy ste tu samí génuis.... nemám čo dodať... ďakujem za postrehy a nápady.... :roll:
Napísať odpoveď