Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Data w innej strefie czasowej
Forum PHP.pl > Forum > PHP
franki
Mam stronkę na serwerze, który jest w innej strefie czasowej GMT-0800, i funkcja date() pobiera mi czas z tej strefy. Jaki skrypt zastosować żeby wyświetlany był Polski czas? - zależy mi na tym żeby był on wykonywany po stronie serwera.
hwao
  1. <?php
  2. date_pl( $format ) {
  3.  $time_pl = 60*60*2; // np 2 h do przodu
  4. return date( $format, time()+$time_pl;
  5. }
  6. ?>

Mozna tak
Pozatym polecam sie przyjrzec
http://pl2.php.net/date
i Wyszukiwarce Forum
bylo pare razy...
bendi
Cytat(hwao @ 2005-02-07 09:32:22)
  1. <?php
  2. date_pl( $format ) {
  3.    $time_pl = 60*60*2; // np 2 h do przodu
  4.     return date( $format, time()+$time_pl;
  5. }
  6. ?>

Mozna tak
Pozatym polecam sie przyjrzec
http://pl2.php.net/date
i Wyszukiwarce Forum
bylo pare razy...

Oj nie calkiem panie kolego, bo przeciez nie mamy pewnosci ze czas zwracany przez nasz serwer, jest czasem GMT, a jak pewnie wiecie coraz czesciej pojawiaja sie problemy wynikajace z tego ze host jest tak naprawde za oceanem, co znacznie kaszani odczyt czasu z serwera, ale da sie na to cos poradzic.
  1. <?
  2. $iTimeZone = 2;
  3. $iCurrentTime = time()+date('Z')/*zerujemy czas serwera*/+ iTimeZone*3600/*nasza strefa czasowa*/+date('I')*3600/*czas letni/zimowy*/;
  4. //no i teraz juz mozna z tym zrobic co sie chce
  5. echo date( 'd-m-Y H:i:s' );
  6. ?>
franki
Cytat(hwao)
  1. <?php
  2. date_pl( $format ) {
  3.  $time_pl = 60*60*2; // np 2 h do przodu
  4. return date( $format, time()+$time_pl;
  5. }
  6. ?>

Mozna tak
Pozatym polecam sie przyjrzec
http://pl2.php.net/date
i Wyszukiwarce Forum
bylo pare razy...

Skrypt działa prawidłowo, a jak go zmodyfikować żeby uwzględniał zmiany czasu?

Cytat(bendi)
Cytat(hwao @ 2005-02-07 09:32:22)
  1. <?php
  2. date_pl( $format ) {
  3.  $time_pl = 60*60*2; // np 2 h do przodu
  4. return date( $format, time()+$time_pl;
  5. }
  6. ?>

Mozna tak
Pozatym polecam sie przyjrzec
http://pl2.php.net/date
i Wyszukiwarce Forum
bylo pare razy...

Oj nie calkiem panie kolego, bo przeciez nie mamy pewnosci ze czas zwracany przez nasz serwer, jest czasem GMT, a jak pewnie wiecie coraz czesciej pojawiaja sie problemy wynikajace z tego ze host jest tak naprawde za oceanem, co znacznie kaszani odczyt czasu z serwera, ale da sie na to cos poradzic.
  1. <?
  2. $iTimeZone = 2;
  3. $iCurrentTime = time()+date('Z')/*zerujemy czas serwera*/+ iTimeZone*3600/*nasza strefa czasowa*/+date('I')*3600/*czas letni/zimowy*/;
  4. //no i teraz juz mozna z tym zrobic co sie chce
  5. echo date( 'd-m-Y H:i:s' );
  6. ?>


Niestety ten skrypt nie działa na serwerze na którym mam konto. Funkcja date dalej wyświetla czas z strefy czasowej serwera
NuLL
  1. <?
  2. $iTimeZone = 2;
  3. $iCurrentTime = time()+date('Z')/*zerujemy czas serwera*/+ iTimeZone*3600/*nasza strefa czasowa*/+date('I')*3600/*czas letni/zimowy*/;
  4. //no i teraz juz mozna z tym zrobic co sie chce
  5. echo date( 'd-m-Y H:i:s' ,$iCurrentTime);
  6. ?>
Vertical
  1. <?php
  2. $polski_zima = strtotime ( '+2 hours' ); //czas zimowy w porównaniu z GMT
  3. $polski_lato = strtotime ( '+1 hour' ); //czas letni w porównaniu z GMT
  4. echo &#092;"date('d-m-Y H:i:s', $polski_zima)\"; //przestawiasz czas na GMT +2 (polski, zimowy)
  5. ?>
franki
To chyba całość jak juz coś to ma wyglądać tak:
  1. <?php
  2. $iTimeZone = 1;
  3. $iCurrentTime = time()-date('Z')/*zerujemy czas serwera*/+ $iTimeZone*3600/*nasza strefa czasowa*/+date('I')*3600/*czas letni/zimowy*/;
  4. //no i teraz juz mozna z tym zrobic co sie chce
  5. echo date( 'd-m-Y H:i:s' ,$iCurrentTime);
  6. ?>


Tylko czy wartość date('I") zmieni się na 1 jak będzie czas letni?
NuLL
Musisz dopisac kontrolę dat albo zmieniać samemu zmieniać ilośc godzin
franki
czyli date('I') na tym serwerze będzie przez cały rok zwracało warość 0. Z tego wynika że zamiast tego trzeba użyć czego w tym stylu:
  1. <?php
  2. for($i=31;$i>24;$i--){
  3. if(date(&#092;"w\", mktime(0,0,0,3,$i,date(\"Y\")))==0){
  4. $dznl=$i;
  5. break;
  6. }
  7. }
  8. for($i=31;$i>24;$i--){
  9. if(date(&#092;"w\", mktime(0,0,0,10,$i,date(\"Y\")))==0){
  10. $dznz=$i;
  11. break;
  12. }
  13. }
  14. $iTimeZone = 2;
  15. $iCurrentTime = time()-date('Z')+$iTimeZone*3600;
  16. if((date('m' ,$iCurrentTime)==&& date('j' ,$iCurrentTime)==$dznl && date('G' ,$iCurrentTime)>=3) || (date('m' ,$iCurrentTime)==&& date('j' ,$iCurrentTime)>$dznl) || (date('m' ,$iCurrentTime)>&& date('m' ,$iCurrentTime)<10) || (date('m' ,$iCurrentTime)==10 && date('j' ,$iCurrentTime)<$dznz) || (date('m' ,$iCurrentTime)==&& date('j' ,$iCurrentTime)==$dznz && date('G' ,$iCurrentTime)<3)) $iTimeZone = 2;
  17. else $iTimeZone = 1;
  18.  
  19. $iCurrentTime = time()-date('Z')+$iTimeZone*3600;
  20. echo date( 'd-m-Y H:i:s' ,$iCurrentTime);
  21. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.