海
我的系统员工在他们的个人资料中有不同的时区。我想根据他们指定的时区显示日期。 GMT时区值放在数据库中。 你能帮助我吗
答案 0 :(得分:1)
假设您的服务器位于美国,并使用当地美国GMT -7将日期存储在数据库中。
所以你发送本地偏移-7和雇员国家的偏移量,让我们说在欧洲的某个地方+2。
所以基本上你只需知道什么是-7 -2及其9小时的偏移量,所以你在数据库中存储的每个日期必须加9小时来代表欧洲的时间。
这将计算偏移量:
fnGetOffset($source_gmt_offset ,$fltGmtOffset)
{
$intGmtOffest = $source_gmt_offset - $fltGmtOffset;
if($intGmtOffest <> 0)
{
return $intGmtOffest;
}
}
计算偏移量后,您只需要从数据库中获取日期并向其添加偏移量。
就像那样:
$intUnixTimeStamp += $intGmtOffest*60*60;
所以这是用PHP做的正确方法。
如果您想根据用户选择的时间查询服务器,则需要返回-9。
答案 1 :(得分:0)
查看PHP的时区设置功能,包括date_timezone_set
。
答案 2 :(得分:0)
除了Dav的回答,我建议将所有时间数据存储在“timestamp”mysql数据类型中,因为它会自动处理时区
答案 3 :(得分:0)
让我们说:
贵公司当地时间是美国gmt(-6)的一部分,我们在荷兰有一名员工,gmt(+2)。
所以你想要做的是:
将事件日期保存在公司当地时间的数据库中。
现在,当您在数据库中查询可用日期时,请首先检查员工国家/地区以获取其偏移量。
最好是将它应用于sql查询,应该是:
$symb= "+";
$intGmtInterval= 8;
DATE_FORMAT(CONVERT_TZ(my_event,'+0:00','$symb$intGmtInterval:00'),'%W')
所以这实际上会增加导致主查询8小时偏移的任何日期。