Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用php从时区计算时间_Php_Mysql_Datetime - Fatal编程技术网

用php从时区计算时间

用php从时区计算时间,php,mysql,datetime,Php,Mysql,Datetime,海 我有一个系统,员工档案中有不同的时区。我想根据他们指定的时区显示日期。GMT时区值将放置在数据库中。 你们能帮我检查一下PHP的时区设置功能吗,包括。除了Dav的答案之外,我建议将所有时间数据存储在“timestamp”mysql数据类型中,因为它会自动处理时区,比如说,您的服务器位于美国,并使用本地美国GMT-7将日期存储在数据库中 因此,您发送本地偏移量-7和员工所在国家的偏移量,比如说在欧洲的某个地方+2 所以基本上你只需要知道什么是-7-2和它的9小时偏移量,所以你在数据库中存储的每


我有一个系统,员工档案中有不同的时区。我想根据他们指定的时区显示日期。GMT时区值将放置在数据库中。
你们能帮我检查一下PHP的时区设置功能吗,包括。

除了Dav的答案之外,我建议将所有时间数据存储在“timestamp”mysql数据类型中,因为它会自动处理时区,比如说,您的服务器位于美国,并使用本地美国GMT-7将日期存储在数据库中

因此,您发送本地偏移量-7和员工所在国家的偏移量,比如说在欧洲的某个地方+2

所以基本上你只需要知道什么是-7-2和它的9小时偏移量,所以你在数据库中存储的每个日期必须加上9小时来代表欧洲的时间

这将计算偏移量:

fnGetOffset($source_gmt_offset ,$fltGmtOffset)
{
    $intGmtOffest = $source_gmt_offset - $fltGmtOffset; 
    if($intGmtOffest <> 0)
    {
        return $intGmtOffest;
    }
}
fnGetOffset($source\u gmt\u offset,$fltGmtOffset)
{
$intGmtOffest=$source\U gmt\U offset-$fltGmtOffset;
if($intGmtOffest 0)
{
返回$intGmtOffest;
}
}
计算偏移量后,只需从数据库中获取日期并将偏移量添加到数据库中

就像这样:

$intUnixTimeStamp+=$Intgmtofest*60*60

因此,这是使用PHP的正确方法

如果您想根据用户选择的时间查询服务器,则需要返回-9。

比如说:

贵公司当地时间是美国格林尼治标准时间(-6)的某个地方,我们在荷兰有一名员工,格林尼治标准时间(+2)

所以您要做的是:

  • 将事件日期保存在公司当地时间的数据库中

  • 现在,当您查询数据库中的可用日期时,首先检查员工所在国家以获取其偏移量

    • 如果是Holland员工的,您计算它的+2,那么您知道数据库中的所有日期都存储为本地公司时间gmt-8。 所以它实际上是gmt=-8的-6-+2偏移量 现在,如果我们想从服务器时间到荷兰的员工时间,我们只需在时间上加上8小时的偏移量
  • 最好是将其应用于sql查询,如下所示:

    $symb= "+";
    $intGmtInterval= 8;
    
     DATE_FORMAT(CONVERT_TZ(my_event,'+0:00','$symb$intGmtInterval:00'),'%W')  
    

    因此,这实际上会将8小时偏移量添加到主查询中的任何日期中。

    “GMT时区值放置在数据库中”-以何种格式/字段类型?谢谢alex,你能给我一些示例日期吗?非常欢迎,我用mysql代码示例发布了另一个回复。