使用jQuery检测TIMEZONE并结合PHP

时间:2016-10-09 08:03:22

标签: php jquery session timezone timezone-offset

我想将UTC时间转换为实际用户时区。 通过PHP实现不能做到这一点。所以我将jQuery和PHP结合在一起。

我附上了我写的代码。不幸的是有些不对劲但我不知道问题出在哪里和哪里。

提前致谢。

    if(isset($_SESSION['timezone'])){

    } else if(isset($_REQUEST['hiddenval'])) {

        $_SESSION['timezone'] = $_REQUEST['hiddenval'];
        header('Location: ' . $url);

    } else {
echo '<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
    <script type="text/javascript" src="//pellepim.bitbucket.org/jstz/jstz.min.js">
    </script>
    <script type="text/javascript">
      $(document).ready(function(){
    var timezone = jstz.determine_timezone();
        document.getElementById("hiddenVal").value = timezone.name();
     </script>';
    }

    echo $_SESSION['timezone'];

来源:http://pellepim.bitbucket.org/jstz/

2 个答案:

答案 0 :(得分:1)

要在JavaScript中获取时区,您应该使用。

Intl.DateTimeFormat().resolvedOptions().timeZone

为什么你要尝试使用隐藏变量?

  

<强> 1。使用Cookie

Javscript代码

function createCookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/; domain=.example.com";
}

createCookie('cookieee','client_timezone', Intl.DateTimeFormat().resolvedOptions().timeZone);

PHP代码

print_r($_COOKIE);
  

<强> 2。使用会话

  • 您可以使用$.ajax()上的$(document).ready向您的PHP文件发送正确的时区值。
  • 在PHP中,如果未设置会话变量,则通过Ajax请求设置它。
  • 不要忘记在PHP第一行使用session_start()

参考文档

console.log(Intl.DateTimeFormat().resolvedOptions().timeZone)

答案 1 :(得分:0)

通过SESSION:

<?php
session_start();
if(isset($_SESSION['timezone'])){
    echo 'User timezone: ' . $_SESSION['timezone'];
} else if(isset($_REQUEST['timezone'])) {
    $_SESSION['timezone'] = $_REQUEST['timezone'];

    header('Location: ' . $_SERVER['PHP_SELF']);
} else {
    echo '<script type="text/javascript">window.location = "' . $_SERVER['PHP_SELF'] . '?timezone="+Intl.DateTimeFormat().resolvedOptions().timeZone;</script>';
}
?>