2012-03-02 4 views
0

мне нужно преобразовать метку времени в UTC-5помощи с функцией временной метки PHP

$offset является часовым поясом пользователя в значении от -12 до 12. $ds в летнее, если он включен, это добавит дополнительный час. Я сделал эту функцию, но я думаю, что она преобразует временную метку UTC-5 в новую временную метку, основанную на часовом поясе пользователя ... Мне нужно, чтобы функция была инвертирована, так что вместо этого она возвращает метку времени в UTC-5. Конечно, проблема намного больше, чем эта, но вот где я застрял. Любой способ это сделать?

function input_date($timestamp) 
{ 
    global $vbulletin; 
    $timestamp = (int)$timestamp; 

    if (strlen((string)$timestamp) == 10) 
    { 
     $hour = 3600.00; 
     $offset = $vbulletin->userinfo['timezoneoffset'];//sample -8 
     $ds = (int)$vbulletin->userinfo['dstonoff'];//DST values are 1 or 0 
     $fluff = $hour*($offset+5.00); 
     $timestamp = $timestamp+$fluff+($ds*$hour); 

     return $timestamp;//return timestamp in UTC-5 format.. 
    } 
    else 
    { 
     return 0; 
    } 
} 
+0

Есть ли возможность использовать * идентификаторы часовых поясов * вместо смещений + флаги DST? По идентификатору часового пояса я имею в виду название «Азия/Токио» или «Европа/Лондон». Затем вы можете легко использовать существующие функции PHP для этого, вместо того чтобы повторно изобретать вычисления времени, которые всегда подвержены ошибкам. – deceze

ответ

2

Whoa ... говорить о переосмыслении колеса! И в области, как правило, трудно получить право (манипуляция с датой/временем) не меньше.

Вы видели классы DateTime и DateTimeZone? Помимо основной математики, они помогут вам с особыми безумиями в этой области программирования (в процентах от летних лет!)!

Я должен спросить, почему вы это делаете? Временная метка UNIX по определению не зависит от часовых поясов, DST и т. Д. Определяется точно как количество секунд, прошедших с данной контрольной даты, и поток времени (релятивистские эффекты, несмотря на ;-), являются инвариантными в отношении местоположения или конкретных особенностей законодателей.

Возможно, если вы сможете более подробно описать, какова ваша фактическая цель, мы могли бы предложить более последовательный подход.