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


Convert user local time to gmt unix timestamp in codeigniter

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

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

或者像human_to_unix()这样的函数,它还有两个参数: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将始终减少一小时。但不管是不是夏天,都应该意识到这一点。即使是冬天,它也会减少时间!!!

如何克服这个问题???

手册上说:

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

并提供了这个例子:

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

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

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

  • gmmktime

当我问这个问题时,我不知道PHP有这些函数,所以我在Codeigniter中查找了这样一个行为。