GMT offset + users

4 отговора 111 прегледа
#1

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.

Много хубав удар, за съжаление нито силен, нито точен
Отговор
в отговор на Spica! #2

Отместване

Синтаксиса на 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 да се преработят за да се получава навсякъде едно и също време.

ИНФОРМАТОР
[линк]
Отговор
в отговор на ИHФOPMATOP #3

Mersi ti

mersi, taka shte go napravia - no pak me glojde edno samnenie....

inache mnooooogoooo ti blagodaria :)))))))

Много хубав удар, за съжаление нито силен, нито точен
Отговор
в отговор на Spica! #4

Re: Mersi ti

moze da polzva6 i:
punenv("TZ=$my_tz");
kato $my_tz e vav unix format

E tuk ni6to niama :[линк]
Отговор
в отговор на Spica! #5

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 еквивалента :)

Отговор