Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Data w innej strefie czasowej
franki
post
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 6.02.2005

Ostrzeżenie: (0%)
-----


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.

Ten post edytował franki 6.02.2005, 23:08:12
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
Sabistik
post
Post #2


Administrator wortalu


Grupa: Przyjaciele php.pl
Postów: 960
Pomógł: 39
Dołączył: 21.10.2003
Skąd: Kraków

Ostrzeżenie: (0%)
-----


date" title="Zobacz w manualu PHP" target="_manual
Go to the top of the page
+Quote Post
hwao
post
Post #3


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




  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...
Go to the top of the page
+Quote Post
bendi
post
Post #4





Grupa: Zarejestrowani
Postów: 401
Pomógł: 5
Dołączył: 14.09.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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. ?>


--------------------
Go to the top of the page
+Quote Post
franki
post
Post #5





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 6.02.2005

Ostrzeżenie: (0%)
-----


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

Ten post edytował franki 7.02.2005, 19:39:40
Go to the top of the page
+Quote Post
NuLL
post
Post #6





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

Ostrzeżenie: (0%)
-----


  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. ?>


--------------------
Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
Go to the top of the page
+Quote Post
Vertical
post
Post #7





Grupa: Zarejestrowani
Postów: 848
Pomógł: 0
Dołączył: 7.07.2004
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


  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. ?>


Ten post edytował Vertical 7.02.2005, 21:02:23
Go to the top of the page
+Quote Post
franki
post
Post #8





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 6.02.2005

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
NuLL
post
Post #9





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

Ostrzeżenie: (0%)
-----


Musisz dopisac kontrolę dat albo zmieniać samemu zmieniać ilośc godzin


--------------------
Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
Go to the top of the page
+Quote Post
franki
post
Post #10





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 6.02.2005

Ostrzeżenie: (0%)
-----


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. ?>
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 00:26