使用jQuery并结合PHP检测TIMEZONE



我想将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/

要在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。使用会话

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

参考文档

  • Intl。DateTimeFormat
  • 用JS设置cookie,用PHP读取
  • 获取JS + PHP的用户时区

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

via 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>';
}
?>

相关内容

  • 没有找到相关文章