将用户本地时间转换为codeigniter中的gmt unix时间戳

时间:2012-01-19 11:52:57

标签: php codeigniter datetime

如果加载codeigniter的日期助手,则会有“local_to_gmt()”函数,但它不带参数,只转换当前服务器时间(由time()生成)。

我需要该函数能够根据用户的当地时间和数据库中的DST字段转换用户给出的任何其他时间。

或类似human_to_unix()的函数,还有2个参数:dst和当地时间。

这样的功能是否存在?


我曾经说过:local_to_gmt()不接受任何争论,但正如第一个回答者所说的那样,它也会采取争论。 但我专注于用户时区和夏令时选项。


第三次更新!!!

我找到了一个解决方案,但根据stackoverlow的定律,我几个小时后才能回答我自己的问题。

到目前为止,请查看此功能可能是我最接近的解决方案:http://codeigniter.com/wiki/convert_to_gmt

function convert_to_gmt($time = '', $timezone = 'UTC', $dst = FALSE)
{            
    if ($time == '')
    {
        return now();
    }

    $time -= timezones($timezone) * 3600;

    if ($dst == TRUE)
    {
       $time -= 3600;
    }

    return $time;
} 

但仍有一个问题:

你相信$ dst会没有任何问题吗?据我了解,根据功能,$ dst总是会减少一个小时。但应该意识到天气是夏天还是没有。它会减少时间,即使它是冬天!!!

如何克服这个问题?

2 个答案:

答案 0 :(得分:1)

Manual说:

  

local_to_gmt()
将Unix时间戳作为输入并将其作为GMT返回

...并提供此示例:

$now = time();
$gmt = local_to_gmt($now);

所以我敢说它实际上接受了一个论点。

答案 1 :(得分:0)

在PHP中使用gm组函数,如:

当我问这个问题时,我不知道PHP有那些功能,所以我在Codeigniter中查找了这样的行为。