协助时间戳php功能

时间:2012-03-02 01:51:22

标签: php timezone timestamp

我需要将时间戳转换为UTC-5

$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;
    }
}

1 个答案:

答案 0 :(得分:2)

哇...谈论重新发明轮子!并且在一个众所周知的难以正确的区域(日期/时间操纵)不会少。

您是否看过DateTimeDateTimeZone课程?除了做基础数学,他们还会帮助你解决这个编程领域中的特殊问题(每个县DST!闰年!)。

但是,我不得不问,你为什么要这样做?根据定义,UNIX时间戳独立于时区,DST等。它被定义为精确,作为自给定参考日期以来经过的秒数和时间流(尽管有相对论效应) ;-)对于地点或立法者的特殊特征是不变的。

也许如果你能够更详细地描述你的实际目标是什么,那么我们可能会建议一个更连贯的方法。