GMT offset + users
4 отговора
111 прегледа
GMT offset + users
Znachi na men neshto mi kuca:
hostvam se v chujbina, i ima slednia problem - kak kato se regne niakoj user i postne belejka tia da bade v negovia chasovi poias a ne v time() na servera - gledah po forumite, ama mnoogo slojno e napraveno - ne viarvam che php-to niama funkcia primerno setGMT (+0200) i vsiako gmdate i t.n. da si raboti pravilno. Ako niakoj mi obiasni kak da go napravia shte mu bada mnooogoo, ama mnoogo blagodaren.
Много хубав удар, за съжаление нито силен, нито точен
hostvam se v chujbina, i ima slednia problem - kak kato se regne niakoj user i postne belejka tia da bade v negovia chasovi poias a ne v time() na servera - gledah po forumite, ama mnoogo slojno e napraveno - ne viarvam che php-to niama funkcia primerno setGMT (+0200) i vsiako gmdate i t.n. da si raboti pravilno. Ako niakoj mi obiasni kak da go napravia shte mu bada mnooogoo, ama mnoogo blagodaren.
Много хубав удар, за съжаление нито силен, нито точен
Отместване
Синтаксиса на date() е следният:
string date ( string format [, int timestamp ] )
за timestamp можеш да използваш и функцията strtotime:
int strtotime ( string time [, int now] )
Ето един пример как се съчетават:
$zonestr = strtotime ("+8 hours");
$today = $today = date("d M Y, H:i:s",$zonestr);
print $today;
Естествено за потребителите ти ще трябва да има поле в което да е посеочено в коя часова зона се намират и с променлива да определяш часовете в strtotime
Ще трябва и всички функции date да се преработят за да се получава навсякъде едно и също време.
ИНФОРМАТОР
[линк]
string date ( string format [, int timestamp ] )
за timestamp можеш да използваш и функцията strtotime:
int strtotime ( string time [, int now] )
Ето един пример как се съчетават:
$zonestr = strtotime ("+8 hours");
$today = $today = date("d M Y, H:i:s",$zonestr);
print $today;
Естествено за потребителите ти ще трябва да има поле в което да е посеочено в коя часова зона се намират и с променлива да определяш часовете в strtotime
Ще трябва и всички функции date да се преработят за да се получава навсякъде едно и също време.
ИНФОРМАТОР
[линк]
Mersi ti
mersi, taka shte go napravia - no pak me glojde edno samnenie....
inache mnooooogoooo ti blagodaria :)))))))
Много хубав удар, за съжаление нито силен, нито точен
inache mnooooogoooo ti blagodaria :)))))))
Много хубав удар, за съжаление нито силен, нито точен
Re: Mersi ti
moze da polzva6 i:
punenv("TZ=$my_tz");
kato $my_tz e vav unix format
E tuk ni6to niama :[линк]
punenv("TZ=$my_tz");
kato $my_tz e vav unix format
E tuk ni6to niama :[линк]
Re: GMT offset + users
Преди време и аз имах същия проблем с TIMEZONES.
Виж какво измислих.... Значи, записваш датата като GMT секунди от началото на UNIX епохата :
$mytime = gmdate("U", gmmktime($hh,$mm,$ss,$month,$day,$year));
Сега $mytime съдържа броя на секундите от 1970 до момента, в който потребителя е submit-нал формата по GMT. Когато извеждаш съобщенията на съответния юзър единственото, което трябва да направиш е да добавиш или извадиш часовата разлика спрямо GMT. Например:
$mytime = 1041379200
Това е датата 6 Май 2003 18:45 по GMT. За да получиш датата в българско време към $mytime добавяш 2*60*60, т.е. 2 часа по 3600 секунди = 7200
echo( gmdate("d M H:i ", ($mytime + $offset*3600))
$offset всъщност е часовата разлика, а горния ред връща
06 May 20:45 - преизчисленото GMT време.
Значи пинизът е да записваш всяка дата в секунди GMT, а да извеждаш същата дата + $offset*3600
Идеята е, ако някой юзър в Los Angeles разглежда постинг пуснат от българин в България да му показва времето, но не в БГ време, а в US еквивалента :)
Виж какво измислих.... Значи, записваш датата като GMT секунди от началото на UNIX епохата :
$mytime = gmdate("U", gmmktime($hh,$mm,$ss,$month,$day,$year));
Сега $mytime съдържа броя на секундите от 1970 до момента, в който потребителя е submit-нал формата по GMT. Когато извеждаш съобщенията на съответния юзър единственото, което трябва да направиш е да добавиш или извадиш часовата разлика спрямо GMT. Например:
$mytime = 1041379200
Това е датата 6 Май 2003 18:45 по GMT. За да получиш датата в българско време към $mytime добавяш 2*60*60, т.е. 2 часа по 3600 секунди = 7200
echo( gmdate("d M H:i ", ($mytime + $offset*3600))
$offset всъщност е часовата разлика, а горния ред връща
06 May 20:45 - преизчисленото GMT време.
Значи пинизът е да записваш всяка дата в секунди GMT, а да извеждаш същата дата + $offset*3600
Идеята е, ако някой юзър в Los Angeles разглежда постинг пуснат от българин в България да му показва времето, но не в БГ време, а в US еквивалента :)