Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.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/6/eclipse/8.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 以用户'显示当前时间;s时区不忘夏令时_Php_Javascript_Time_Timezone_Dst - Fatal编程技术网

Php 以用户'显示当前时间;s时区不忘夏令时

Php 以用户'显示当前时间;s时区不忘夏令时,php,javascript,time,timezone,dst,Php,Javascript,Time,Timezone,Dst,我知道有很多类似的问题,但我没有找到我真正需要的 所以我使用PHP,我想在访问者的当前时区中显示来自数据库的时间戳 到目前为止,我已经做了以下工作: 在PHP中,我在任何地方都使用$TIME,即: $TIME=TIME()-date(“Z”) 这应该是对时间的绝对引用,没有dst,对吗 我使用javascript获取用户的时区偏移量(仅在第一次访问时),并以分钟为单位进行存储: var d=新日期() var tz=-d.getTimezoneOffset() 当然,用户可以将其时区设置为另一个

我知道有很多类似的问题,但我没有找到我真正需要的

所以我使用PHP,我想在访问者的当前时区中显示来自数据库的时间戳

到目前为止,我已经做了以下工作:

  • 在PHP中,我在任何地方都使用$TIME,即:

    $TIME=TIME()-date(“Z”)

    这应该是对时间的绝对引用,没有dst,对吗

  • 我使用javascript获取用户的时区偏移量(仅在第一次访问时),并以分钟为单位进行存储:

    var d=新日期()
    
    var tz=-d.getTimezoneOffset()

    当然,用户可以将其时区设置为另一个时区

  • 显示数据库中的日期时,我将存储的时间量添加到时间戳中:
    $timestamp+=$TIMEZONE\u OFFSET*60

    我用date()格式化它

  • 这似乎工作得很好,但我想知道如果涉及到dst该怎么办

    我想在dst时自动更改用户的时区偏移量,但所有日期都会更改(不在dst期间的日期也会更改)。并不是每个地区都使用dst,所以我真的很困惑如何解决这个问题:\

    首先,
    time()
    date()
    取决于INI设置
    date.timezone
    以及dst。对于绝对时间,您应该使用
    gmmktime()
    gmdate()

    例如,可以使用
    DateTimeZone::getTransitions()
    解析有关时区DST的信息

    或者您可以使用一些第三方服务。

    首先,
    time()
    date()
    取决于INI设置
    date.timezone
    以及DST。对于绝对时间,您应该使用
    gmmktime()
    gmdate()

    例如,可以使用
    DateTimeZone::getTransitions()
    解析有关时区DST的信息


    或者您可以使用一些第三方服务。

    我将以Unix date()格式发送所有时间戳,该格式基于UTC, 独立于时区、DST等。在PHP方面:

    $php_timestamp = gettimeofday(true);
    
    在JavaScript方面:

    var js_timestamp = new Date(php_timestamp*1000);
    
    然后所有的
    获取{FullYear,Month,Date,Hours,…}()
    to[Locale]{Date,Time,}String()
    方法将自动给出结果
    基于用户(客户端)时区。

    我将以Unix date()格式发送所有时间戳,该格式基于UTC, 独立于时区、DST等。在PHP方面:

    $php_timestamp = gettimeofday(true);
    
    在JavaScript方面:

    var js_timestamp = new Date(php_timestamp*1000);
    
    然后所有的
    获取{FullYear,Month,Date,Hours,…}()
    to[Locale]{Date,Time,}String()
    方法将自动给出结果 基于用户(客户端)时区