如果加载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总是会减少一小时。但是应该意识到天气是否是夏天。即使在冬天,它也会减少时间!!!
如何克服这个问题???
在PHP中将一种日期格式转换为另一种日期格式的可能重复方式-另请参阅右侧的许多相关问题并使用站点搜索。
我的问题与您评论的链接之间没有任何关系。 我在谈论用户特定的时区和夏令时设置。 但是,问题和最佳答案(我只读了那两个)都与用户本地时间无关。 无论如何
要求功能可以满足您的需求并不明智,但最好看一下它是如何完成的。 我必须承认,重复的副本确实不合适,但我也向您指出了右边的其他相关问题,例如 (仅从其中一种中选择)PHP,Codeigniter:如何在Web应用程序中基于用户的时区/位置全局设置日期/时间?
手册说:
local_to_gmt()Takes a Unix timestamp as input and returns it as GMT
...并提供以下示例:
$now = time();
$gmt = local_to_gmt($now);
所以我敢说它实际上接受了一个论点。
哦,是的,你是对的。 但是它并不关心用户本地时间和DST设置。
Unix时间戳是"通用的",它们不包含时区信息,因为无论您身在何处,它们都是相同的。 从/转换为常规日期时(例如19/01/2012 13:14),您会考虑时区。
是的,你是对的。 因此,我想要一个函数来影响用户给出的时间(根据用户表中他的数据库字段),然后将其转换为unix时间戳。 这样,我将能够对其进行自己的计算,并且Ill还能够在其他用户的本地时间显示时间。
老实说,我不是CI用户。 我曾以为这是一个手工误读的简单情况。 抱歉,我无法提供更多帮助。
亲爱的朋友,我非常感谢您的尝试。 非常感谢您的评论:)
在PHP中使用gm组函数,例如:
gmmktime
当我问这个问题时,我不知道PHP具有这些功能,因此我在Codeigniter中查询了这种行为。