To jest tylko wersja do druku, aby zobaczyć pełną wersję tematu, kliknij TUTAJ
phpBB2 by Przemo
Support forów phpBB2 modified by Przemo

Wersje 1.9 i starsze - funkcja date

misterdexter - 12-04-2004, 19:55
Temat postu: funkcja date
Wiem Przemo, że dostajesz już sza?u z tymi wszystkimi poprawkami, ale chciałbym Cię prosić o dodanie małej rzeczy, a która wielu może się przyda?. Chodzi konkretnie o problemy związane z czasem letnim.
Widziałem, że korzystasz z polecenia date("I"), które jest niestety zawodne. Ja mam serwer w Stanach i zmiana na czas letni była nie w ostatni? sobot? marca, ale w pierwsz? sobot? kwietnia. I tu moja prośba. Czy mógłby? pomóc innym z takim problemem korzystaj?c na forum zamiast z date("I") z mojego algorytmu? Jest bardzo dobry i zarazem prosty. Z powodzeniem stosuj? go u siebie na stronie.
Funkcja zwraca 0 dla czasu od godz. 2.00 ostatniej soboty pa?dziernika do godz. 3.00 ostatniej soboty marca. W pozostałym okresie czasu funkcja zwraca 1. W nawiasie dodatkowo podajemy różnic? od czasu Londy?skiego, dla czasu zimowego, czyli dla Polski 1.


Z góry dzięki za chociaż ch?? przeczytania tego tematu...

Przemo - 12-04-2004, 21:04

Niewiele pomoge bo nie orientuje siedokladnie w tych wszystkich datach, zmianach czasu itp.
misterdexter - 12-04-2004, 21:09

Ja to sprawdzałem w różnych encyklopediach. Dla pewności możesz zajrze?, np. tu: en.wikipedia.org/wiki/Daylight_saving_time
Jeśli będziesz zainteresowany, to mogę Ci przesła? mój kod. To może się naprawdę przyda?, bo teraz co raz więcej serwerów jest w Stanach a ludzi różnica czasu denerwuje...

Widmo - 12-04-2004, 21:41

wklej tu :)
misterdexter - 12-04-2004, 21:51

Oto kod:
Kod:
function czasLetni($offset){

$offset*=3600;

$DST = 0;

$toDay = gmdate("j",time()+$offset);
$mon = gmdate("n",time()+$offset);
$yea = gmdate("Y",time()+$offset);
$hou = gmdate("G",time()+$offset);


if($mon == 3){
    for($i=0;$i<31;$i++){
        if(date("w",mktime(0,0,0,$mon,$i+1,$yea)) == 0){
            $lastDay = date("j",mktime(0,0,0,$mon,$i+1,$yea));
        }
    }
    if($lastDay < $toDay || $lastDay == $toDay && $hou >= 2){
        $DST = 1;
    }
}
if($mon > 3 && $mon < 11){
    $DST = 1;
}
if($mon == 10){
    for($i=0;$i<31;$i++){
        if(date("w",mktime(0,0,0,$mon,$i+1,$yea)) == 0){
            $lastDay = date("j",mktime(0,0,0,$mon,$i+1,$yea));
        }
    }
    if($lastDay < $toDay || $lastDay == $toDay && $hou >= 2){
        $DST = 0;
    }
}

return $DST;

}

Przemo - 12-04-2004, 21:57

mozna przeciez ustawic roznice czasu w panelu admina i w profilu, wiec nie wiem w czym problem.
misterdexter - 12-04-2004, 22:29

No można
Widziałem na jednym forum, że kazali wszystkim przestawić na Kaliningrad, ale to jest śmieszne!
Poza tym zmianą na czas letni już dodałeś i jest nawet wyłączanie w PA. Ja proszę jedynie o zmianą tego algorytmu z PHP, wg. czasu serwera, na mój. No chyba, że byłoby to dużo zabawy...

Przemo - 13-04-2004, 00:02

Duzo, pełno jest w forum funkcji date() i time() trzeba by to bylo wszedzie zmieniac, znow sie cos pochrzani. Mozna hurtowo zmienic userom strefe w PA>SQL>MySQL: update phpbb_users set user_timezone='5' i już
misterdexter - 13-04-2004, 00:06

To jest niestety ten ból
Te? widziałem, że dużo tam jest tego date Przynajmniej dzięki, że po?więciliście mi czas.



Powered by phpBB modified by Przemo © 2003 phpBB Group