Čas v PHP
akosi nechápem, to si snáď moja (atloxova) stránka mení svojvoľne server?gwixt napísal:hej? a server vie v akej casovej zone je uzivatel???
ak by vedel JS zistit v akej casovej zone je uzivatel tak nie je problem ...
aby som ja nevedel, aký čas je na "mojom" servery? alebo sa jedná o niečo iné?
to atlox: načo si komplikovať život?
pozri si ukážku, rozmery sú samozrejme nastaviteľné
a ak máš záujem stiahni si to hodz2.zip
-
mastermind
VIP
- Príspevky: 4810
- Registrovaný: 09 feb 2005, 13:17
-
XilleR
Medium Professional
- Príspevky: 1125
- Registrovaný: 16 júl 2005, 18:47
- Kontaktovať používateľa:
toto som tak trosku ukradol a doplnil
...nerozpoznava to casove pasma, ale ten kto bude surfovat zo zahranicia si domysli, ze je v inom pasme ked je ta stranka po slovensky ....no keby si nahodou chcel aj to, viem o stranke, kde je to riesene cez IP adresy - no ukradnut to nejde, len spravit podla nich
ADD: len dodam je to .php nie HTML ako by si niekto podla hlavicky mohol mysliet 
Kód: Vybrať všetko
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<title></title>
<script type="text/javascript">
<!--
var clock_stamp;
function clock_output()
{
var now = new Date(clock_stamp * 1000);
h = now.getHours();
m = now.getMinutes();
s = now.getSeconds();
if(h < 10)
h = "0" + h;
if(m < 10)
m = "0" + m;
if(s < 10)
s = "0" + s;
var ___hodiny = document.getElementById('clock');
___hodiny.innerHTML = h + ":" + m + ":" + s;
}
function clock_update()
{
clock_stamp += 1;
var _hodiny = document.getElementById('clock');
if (!_hodiny) return;
clock_output();
}
function clock_boot(stamp)
{
clock_stamp = stamp;
clock_output();
setInterval("clock_update();", 1000);
}
-->
</script>
</head>
<body>
<div id="time"><span id="clock"></span></div>
</ul>
<script type="text/javascript">clock_boot(<?php echo time()?>)</script>
</div>
</body>
</html>už to začínam pomaly chápať, akosi som nebral do úvahy, že na moju stránku môžu prísť aj z Bordeoux, aj keď na moju stránku chodia aj z Japonska (boti)zrejme ich moje hodiny netrápiamastermind napísal:to zupanok: gwixt hovoril o tom ze server moze mat inu casovu zonu ako navstevnik, teda server moze byt zasity niekde v uzbekistane, zatial co uzivatel moze sediet pri Bordeoux niekde vo FR. Ako bude server vediet ze ten uzivatel je v tej ktorej casovej zone?
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>