Problem z wyświetlaniem czasu
Problem z wyświetlaniem czasu
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
Re: Problem z wyświetlaniem czasu
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ę.
[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ę.
Re: Problem z wyświetlaniem czasu
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
Re: Problem z wyświetlaniem czasu
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
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.
EDIT:
rocafella.pl w dziale "Informacje" pisze, że ich serwer hostuje serwerowania NAC, która zaś znajduje się w USA
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.
Re: Problem z wyświetlaniem czasu
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?
[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?
Re: Problem z wyświetlaniem czasu
W takim wypadku linię 4. musisz zamienić na następującą:
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]
Kod: Zaznacz cały
$today = date("H:i",strtotime("+6 hours",time()));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]
Re: Problem z wyświetlaniem czasu
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?
[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?
Re: Problem z wyświetlaniem czasu
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:Bym musiał chyba w każdym pliku gdzie jest funkcja date wklejać ten sam kod co wyżej (...)
Jakie są to błędy?xrb pisze:(...) tylko że wyskakują jakieś błędy jak wpisuję (...)
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 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?
Re: Problem z wyświetlaniem czasu
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
Re: Problem z wyświetlaniem czasu
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
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
Re: Problem z wyświetlaniem czasu
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
<?
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
Re: Problem z wyświetlaniem czasu
OK juz sobie poradziłem ale jeszcze w inny sposób. Stworzyłem plik, który zamienia te bzdetne znaczki na polskie znaki ;]
