Autor Zpráva
CZghost
Profil *
Dělám stránky o Q3 a chtěl bych vypsat aktuální datum a čas, ale tak, aby se měnily hodiny, minuty a sekundy v reálném čase.
Sir Tom
Profil
CZghost:
V reálném čase to nejde - PHP je serverový jazyk - tzn. nejdřív úlohy na serveru a k uživatelovi pošle výsledek. Tvůj požadavek umí vyřešit JavaScript.
CZghost
Profil *
Děkuji za odpověď, čas jsem udělal dynamický, datum je pomocí PHP.
CZghost
Profil *
Bude fungovat tento zápis data?
<?php 
	$ENDays=Array(
		"Mon"=>"Monday", 
		"Tue"=>"Tuesday", 
		"Wed"=>"Wednesday", 
		"Thu"=>"Thursday", 
		"Fri"=>"Friday", 
		"Sat"=>"Saturday", 
		"Sun"=>"Sunday"
	); 
	$ENMonth=Array(
		"Jan"=>"January", 
		"Feb"=>"February", 
		"Mar"=>"March", 
		"Apr"=>"April", 
		"May"=>"May", 
		"Jun"=>"June", 
		"Jul"=>"July", 
		"Aug"=>"August",  
		"Sep"=>"September",  
		"Oct"=>"October",  
		"Nov"=>"November",  
		"Dec"=>"December" 
	); 
	echo ($ENDays[Date("D")]," ",Date("j"));
	if(Date("j")==1) {
		echo("<sup>st</sup>")
	}
	elseif(Date("j")==21) {
		echo("<sup>st</sup>")
	}
	elseif(Date("j")==31) {
		echo("<sup>st</sup>")
	}
	elseif(Date("j")==2) {
		echo("<sup>nd</sup>")
	}
	elseif(Date("j")==22) {
		echo("<sup>nd</sup>")
	}
	elseif(Date("j")==3) {
		echo("<sup>rd</sup>")
	}
	elseif(Date("j")==23) {
		echo("<sup>rd</sup>")
	}
	else {
		echo("<sup>th</sup>")
	};
	echo(" ",$ENMonth[Date("M")]," ",Date("Y"));
?>
okolojdouci
Profil *
CZghost:
Bude fungovat tento zápis data?

Co si představuješ pod slovem "fungovat"? Proč si to nevyzkoušíš?
Joker
Profil
CZghost:
čas jsem udělal dynamický, datum je pomocí PHP.
Proč?

Čili o půlnoci to bude vypadat následovně?
26. října 23.58
26. října 23.59
26. října 00.00
26. října 00.01

Prostě PHP je na věci které se mají měnit při načtení stránky. Na věci které se mají měnit během zobrazení stránky je JavaScript.
CZghost
Profil *
Joker:
Co takhle Ajax? Spojení JavaScriptu s PHP?
Joker
Profil
Proboha, proč?
kajaman
Profil
řešení 1,
-necháš datum a čas vypsat JS

řešení 2,
-každou sekundu necháš JS zavolat server a zeptáš se, kolik je hodin
-server ti odpoví a ty to necháš vypsat JS

najdi 10 rozdílů :-)
Joker
Profil
kajaman:
najdi 10 rozdílů :-)
V zátěži serveru bude rozdíl dost radikální :-)
CZghost
Profil *
kajaman:
Já bych potřeboval i datum, kolikátého je...
JavaScript se tedy postará o datum, PHP zase vypíše svátek ;-)
jenikkozak
Profil
CZghost:
Dělám stránky o Q3
PHP zase vypíše svátek ;-)
Q3, to myslíte auto? Co má auto společné se svátky? „Svátek má Erik, nezapomněli jste mu koupit auto?“ To vypadá divně.
V tomto případě bych neřešil jak to udělat, ale proč to udělat.
Ugo
Profil
Správný řešení je skutečně v kombinaci protože javascript neumí zjistit správnej čas, na ten u uživatele se nedá spolehnout řešením teda je PHPkem předat hodnotu javascriptu, tma pustit vteřinovej interval a počítat když je minuta>60 minuta=00 atp... to je už lehký
Joker
Profil
CZghost:
Já bych potřeboval i datum, kolikátého je...
JavaScript se tedy postará o datum, PHP zase vypíše svátek ;-)
Dotaz:
To je účelem tam za každou cenu dostat nějaké PHP? Proč to nemůže prostě všechno udělat JavaScript?

Jinak ale začínám mít neblahé tušení, že ten aktuální čas pro stránku samotnou nemá žádný smysl a jde jen o to, aby tam byl „měnící se“ čas (ideálně digitálním fontem, když už ne „hejbací“ ručičkové hodiny) a kdo má dnes svátek.
Budiž, na mé úplně první stránce takové „kravinky“ taky byly, ale s odstupem je třeba si položit otázku: K čemu to je dobré?

Ugo:
javascript neumí zjistit správnej čas
JS vrací systémový čas na počítači uživatele. PHP vrací systémový čas na počítači serveru.
Co je „správný čas“? Když čas na serveru nebude nastavený přesně anebo server bude v jiném časovém pásmu než já, bude z pohledu návštěvníka PHP čas „špatně“, zatímco JS čas „správně“.

řešením teda je PHPkem předat hodnotu javascriptu, tma pustit vteřinovej interval
Ne, protože na přesnost časovače v JS se nedá tak spolehnout.
Respektive se dá spolehnout na to, že se to poměrně rychle rozsynchronizuje (z mých zkušeností zhruba o sekundu za necelou minutu, závisí to ale i na prohlížeči).
Řešením tohohle problému (dynamická aktualizace času jehož hodnota je řízená serverem) je na začátku zjistit rozdíl mezi serverovým a klientským časem a pak zobrazovat klientský čas upravený o ten rozdíl.
Ugo
Profil
Joker:
správným časem (špatně jsem dal čárku) mám na mysli čas na serveru, protože na ten u uživatele se nedá spolehnout, nad serverovým máš kontrolu a bude u všech stejný

Ne, protože na přesnost časovače v JS se nedá tak spolehnout.
to je pravda, ovšem při každém refreshi se načte čas PHPkem takže se srovná a rozdíl je tudíž neznatelnej ... btw. jak jinak se to řeší když to chceš celý přes JS? (jaká existuje spolehlivější metoda intervalu)

Celý JS bych to rozhodně neřešil, jedinej moment kdy mě zajímá čas na internetový stránce je, když si nejsem jistej jestli moje hodiny dou správně a to mě pak takovej čas z mýho desktopu na stránce dokáže akorát naštvat.
Joker
Profil
Ugo:
Obecně není pravda, že čas na serveru je vždycky „správný“. Je nutné si uvědomit, že tu mluvíme o dvou různých problémech.

1. V některých situacích je „správný“ čas na počítači klienta, to mohou být třeba hodiny na stránce, nebo čas od/do nějaké události na klientovi (například čas od kliknutí na tlačítko).
2. V jiných situacích je třeba časomíru na stránce řídit nějakým jednotným časem, například čas zbývající do konce aukce. Tam je třeba použít serverový čas.

jedinej moment kdy mě zajímá čas na internetový stránce je, když si nejsem jistej jestli moje hodiny dou správně
Z čehož vyplývá jedno užitečné sdělení, a sice že nemá smysl si dávat na stránku hodiny pokud předmětem daného webu není měření přesného času.
CZghost ale píše, že dělá stránku o „Q3“, což si nejsem jistý co znamená, ale nenašel jsem tuhle zkratku v souvislosti s časovým serverem.
Seřizovat si čas v PC podle nějaké webové stránky na které jsou shodou okolností hodiny je, s prominutím, padlé na hlavu. To že počítač funguje jako webový server z něj nedělá autoritu pro poskytování přesného času. Když si na svém počítači pustím webový server a ty stránky tam nahraju, stane se můj „nedůvěryhodný“ lokální čas „důvěryhodným“ serverovým časem?

btw. jak jinak se to řeší když to chceš celý přes JS?
Jak jsem psal.
Ten bod 1. výše se dá řešit celý přes JS a objekt Date.
Bod 2. se řeší tak jak jsem říkal- na začátku se zjistí rozdíl mezi serverovým a klientským časem a o ten rozdíl se pak upraví klientský čas.
Jedna možnost jak to řešit: PHP do stránky nageneruje JS proměnnou do které uloží aktuální (serverový) čas, následně JS porovná s aktuálním (klientským) časem a spočítá, o kolik má upravovat klientský čas.
CZghost
Profil *
jenikkozak:
Q3 má být hra Quake 3, neboli Quake III Arena.
Svátek prostě jen tak, je to na většině webů.
CZghost
Profil *
Joker:
Koukám, že tu někdo miluje JavaScript. Jenže je tu problém: někdo má JavaScript vypnutý a pak to nefunguje.
PHP je na serveru, takže tento problém částečně odpadá.
Sir Tom
Profil
CZghost:
Udělej to takto:

Jdi na stránku JS skriptů http://javascriptlibrary.sweb.cz/datetime.html a stáhni si tam skript "Datum a čas v boxu". Takhle to pak bude vypadat.

V takových JS knihovnách si koneckonců můžeš stáhnout i skripty, které vyplivnou svátky. :)

Klidně můžeš udělat ten čas a datum za pomoci PHP, ale otázkou je opravdu proč - je to řešení nestandardní.
Jestli někomu vadí, že JS čas je jiný od PHP času, tak není problém si serverový čas pomocí PHP uložit do JS proměnné a s ní pak pracovat.

Argument, že někdo mívá JS vypnutý je velice oblíbený (možná až příliš), ale opravdu nikoho takového neznám - zase otázka proč?
Alphard
Profil
Sir Tom:
Argument, že někdo mívá JS vypnutý je velice oblíbený (možná až příliš), ale opravdu nikoho takového neznám - zase otázka proč?
Já ano, právě proto, aby se zbavili podobných nesmyslů. Občas ho také vypínám, když mě spíš otravuje než pomáhá.
Ono je docela rušivé mít na stránkách běžící hodiny, zvlášť když zobrazují i sekundy.
Joker
Profil
CZghost:
Koukám, že tu někdo miluje JavaScript.
Toho jsem opravdu dalek, ale zkusím analogii:
A: Dělám do zdi díru na hmoždinku kladivem a šroubovákem, ale vůbec mi to nejde.
B: Proč kladivem a šroubovákem? Použijte vrtačku.
A: Fajn. Já vlastně chci ty díry tři, tak jednu udělám vrtačkou a další kladivem a šroubovákem.
B: Proboha, proč nevyvrtáte všechny tři vrtačkou?
A: Koukám, že tu někdo miluje vrtačku.

Prostě každý nástroj je vhodný na něco. Že se kladivem výborně zatloukají hřebíky ještě neznamená, že kladivo je nejlepší nástroj i na všechno ostatní.
Aneb:
PHP je na serveru,“ …a jako takové se nehodí pro dynamické změny stránky na straně klienta.


problém: někdo má JavaScript vypnutý a pak to nefunguje.
K tomu otázka:
Pro tu konkrétní stránku, je zobrazení průběžně aktualizovaných hodin a svátku nepostradatelná funkčnost kterou je nutné dodat všem návštěvníkům? Nebo je to spíš kravinka u které by se nic nestalo kdyby tam nebyla vůbec, spíš by to část návštěvníků ještě uvítala?
Sir Tom
Profil
Alphard:
Ono je docela rušivé mít na stránkách běžící hodiny, zvlášť když zobrazují i sekundy.
Ano, souhlasím s tím, že je to víceméně taková ta hloupost, kde se prostě někteří autoři chtějí ukázat, že něco dovedou. V podstatě to ale žádný užitek nemá. Mně to moc rušivé nepřipadá - nevím, asi už ty různé rádoby věci naprosto ignoruji. Sice to na stránkách je, ale vůbec si toho nevšímám...
CZghost
Profil *
Konec diskuze, datum a čas jsem vymazal... Konec konců, nemohu najít spolehlivý skript, který by se hodil na dvojjazyčný web...

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0