Problem z wyświetlaniem czasu

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
xrb
Posty: 13
Rejestracja: wt sie 30, 2005 3:24 pm
Lokalizacja: Olsztynek
Kontakt:

Problem z wyświetlaniem czasu

Post autor: xrb »

Witam. Posiadam pewien skrypt do zarządzania stroną dodawanie newsów itp. Kiedy miałem konto z bazą mysql na lycos'ie wszystko było OK. Kiedy zmieniłem serwer na rocafella.pl kiedy dodaję news'a lub pojawia się mi czas generowania strony to pojawia się z 6 godzinnym poslizgiem. Np. jak dodaje news'a o 12 w południe t wyświetla mi się 6 rano. Nie wiem czy jest to wina jakichś ustawień w skrypcie czy może jednak serwera? Jesli macie jaką rade to bardo proszę o pomoc. Z góry dzięki. Pozdrawiam narka
Stig
Administrator
Posty: 938
Rejestracja: pn paź 04, 2004 10:52 am

Re: Problem z wyświetlaniem czasu

Post autor: Stig »

Faktycznie, z tego co piszesz wynika, że albo na Twoim serwerze ustawiona jest zła godzina, lub też, co wydaje mi się bardziej prawdopodobne, serwer znajduje się w innej strefie czasowej - np. w Stanach. Problem ten jest dość powszechny i istnieje do niego wiele rozwiązań. Jedno z prostszych wykorzystuje PHP'ową funkcję strtotime(). Przykład:
[php]<?php
echo 'Data serwera: '.date("d.m.Y H:i").'<br />';
echo 'Data +6 godzin: '.date("d.m.Y H:i",strtotime("+6 hours",time()));
?>[/php]
Gdzie w pierwszym argumencie funkcji należy wpisać pożądaną różnicę.
xrb
Posty: 13
Rejestracja: wt sie 30, 2005 3:24 pm
Lokalizacja: Olsztynek
Kontakt:

Re: Problem z wyświetlaniem czasu

Post autor: xrb »

Serwer jest polski :] a więc możliwe że na tym serwie jest ustawiona zła godzina bo tonie jest mój serwer ;] a jeśli chodzi o ten kod to w którym miejscu należy go wklejać? w każdym pliku z rozszerzeniem .php? jakoś na początku? proszę o odp pozdrawaim
Stig
Administrator
Posty: 938
Rejestracja: pn paź 04, 2004 10:52 am

Re: Problem z wyświetlaniem czasu

Post autor: Stig »

To, że hosting jest polski wcale nie wyklucza tego, że serwery trzymane są gdzieś za granicą. Dla przykładu: lap.pl, o czym informuje na swojej stronie, trzyma serwery w Data Center w Holandii. Z tego co wiem taka praktyka jest powszechna :)

EDIT:
rocafella.pl w dziale "Informacje" pisze, że ich serwer hostuje serwerowania NAC, która zaś znajduje się w USA 8)

Jeśli chodzi o kod, to jego trzecią linię, a właściwie samą funkcję strtotime() z atrybutami musisz zamieścić jak drugi atrybut funkcji date() znajdującej (lub znajdujących) się w używanym przez Ciebie skrypcie.
Ostatnio zmieniony wt sie 30, 2005 9:25 pm przez Stig, łącznie zmieniany 1 raz.
xrb
Posty: 13
Rejestracja: wt sie 30, 2005 3:24 pm
Lokalizacja: Olsztynek
Kontakt:

Re: Problem z wyświetlaniem czasu

Post autor: xrb »

U mnie w kodzie wystepuje też coś takiego jak zone. Czyżby była to strefa czasowa? :) Zresztą sam zobacz:

[php]<?php
$time = time();
$date = date('d.m.Y'),;
$today = date('H:i');
$zone = date('T');
?>[/php]

Tylko nie wiem co ma oznaczać ta literka T ;] Odpisz jak moższesz. Z góry dzięki. Narka

EDIT - Hmm właśnie to już teraz wiem skądd te 6 h przesunięcia. Jakmoge rozwiązać ten problem?
Stig
Administrator
Posty: 938
Rejestracja: pn paź 04, 2004 10:52 am

Re: Problem z wyświetlaniem czasu

Post autor: Stig »

W takim wypadku linię 4. musisz zamienić na następującą:

Kod: Zaznacz cały

$today = date("H:i",strtotime("+6 hours",time()));
Nie daję głowy, że to poskutkuje, gdyż nie znam reszty kodu, mimo to należy spróbować :)

Znak T faktycznie oznacza strefę czasową. Użyta w szablonie formatującym datę zwraca trzyliterowe oznaczenie strefy czasowej (np. GMT, CET, MDT). Z ciekawości możesz zamieścić na serwerze osobny plik z następującym kodem, aby sprawdzić jaka strefa czasowa jest na nim ustawiona:
[php]<?php
$zone = date('T');
echo $zone;
?>[/php]
xrb
Posty: 13
Rejestracja: wt sie 30, 2005 3:24 pm
Lokalizacja: Olsztynek
Kontakt:

Re: Problem z wyświetlaniem czasu

Post autor: xrb »

zrobiłem tak jak mówiłeś. Czas generowania strony fakycznie jest już ok. Ale nadal daty dodania newsów i inne funkcje są nieprawidowe. Bym musiał chyba w każdym pliku gdzie jest funkcja date wklejać ten sam kod co wyżej tylko że wyskakują jakieś błędy jak wpisuję:

[php]<?php
$date = date("d.m.y",$news->date);
$day = date("H:i", strtotime("+6 hours",time()), $news->date);
print "Dodany $date - $day przez ";

?>[/php]
O co może chodzić?

EDIT: Sprawdziłem tą strefę czasową skryptem, który mi podałeś wyskoczyło EDT ;] Ciekawe jak można to zmienić? Jeśli T = EDT to jaką literkę wpisać żeby się właściwie czas wyświetlał i czy to pomoże?
Stig
Administrator
Posty: 938
Rejestracja: pn paź 04, 2004 10:52 am

Re: Problem z wyświetlaniem czasu

Post autor: Stig »

xrb pisze:Bym musiał chyba w każdym pliku gdzie jest funkcja date wklejać ten sam kod co wyżej (...)
Musisz robić to "z głową". Funkcję strtotime() umieść tylko w funkcji date(), która pobiera datę do zapisu do bazy. Możliwe, że to zadanie wykonywane jest za pomocą funkcji time(). W takim przypadku funkcję strtotime() umieść w funkcji date(), która wykorzystuje dane z bazy, i której wartość drukowana jest na ekranie. Tyle mogę Ci podpowiedzieć nie znając kodu i szczegółów sposobu działania skryptu.
xrb pisze:(...) tylko że wyskakują jakieś błędy jak wpisuję (...)
Jakie są to błędy?
xrb pisze:EDIT: Sprawdziłem tą strefę czasową skryptem, który mi podałeś wyskoczyło EDT ;] Ciekawe jak można to zmienić? Jeśli T = EDT to jaką literkę wpisać żeby się właściwie czas wyświetlał i czy to pomoże?
Nie, to nie pomoże. Jak pisałem: znak T użyty w szablonie formatującym datę zwraca trzyliterowe oznaczenie strefy czasowej. Zwrócił EDT czyli Eastern Daylight Time. Nie da się zdalnie zmienić strefy czasowej serwera. To ustala jego administrator.
xrb
Posty: 13
Rejestracja: wt sie 30, 2005 3:24 pm
Lokalizacja: Olsztynek
Kontakt:

Re: Problem z wyświetlaniem czasu

Post autor: xrb »

Nom z tą strefą już się domyśliłem że to administrator może zrobić ;] mam do Ciebie prośbę: możesz odezwać się do mnie na GG? Może byśmy cosik zdziałali jak masz czas? Odpisz albo odezwij się narka
xrb
Posty: 13
Rejestracja: wt sie 30, 2005 3:24 pm
Lokalizacja: Olsztynek
Kontakt:

Re: Problem z wyświetlaniem czasu

Post autor: xrb »

siemka. w sumie juz sobie poradzilemz tym czasem tzn poradzilem zmienilem po prostu serwer ;] bo admin napisal ze nic nie da sie z tym zrobic ;] bo serwer jest w USA i korzystaja z niego takze uzytkownicy stamtad ;] to by bylo an tyle.

Ale teraz mam kolejny problem. Otoz mam problem z wyswietlaniem polskich liter w news'ach, i tylko w newsach bo poza tym w innych dzialach na stronie wszystko jest ok. Mam ustawione na kazdej stronie [php]<?php
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
?>[/php] ale to nic nie daje w tych news'ach. Jest jeszcze jakis inny sposob zeby zamienic te znaki? Odp pls pozdrufki nrka
flavio100
Nowy
Nowy
Posty: 48
Rejestracja: śr sie 17, 2005 5:08 pm
Lokalizacja: wuwua
Kontakt:

Re: Problem z wyświetlaniem czasu

Post autor: flavio100 »

hmm. proponuje
<?
print("<metatag costam costam>");
?>

ew. includuj sobie na poczatku kazdej strony to co musi byc, np.

<?
include("top.inc");
?>

gdzie w top.inc bedziesz mial zwykly html, m.in metatagi czy dolaczanie plikow css

wygodne rozwiazanie przy zmianach designu;)

nie masz printa wiec powinien Cisie chyba skrypt wywalic?
poza tym to to mozesz oddawac statycznie, po co to dawac w php?

pzdr
xrb
Posty: 13
Rejestracja: wt sie 30, 2005 3:24 pm
Lokalizacja: Olsztynek
Kontakt:

Re: Problem z wyświetlaniem czasu

Post autor: xrb »

OK juz sobie poradziłem ale jeszcze w inny sposób. Stworzyłem plik, który zamienia te bzdetne znaczki na polskie znaki ;]
ODPOWIEDZ