使用 jQuery 检测 TIMEZONE 并结合 PHP
Detect TIMEZONE with jQuery and combined with PHP
我想从 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'];
要获得 JavaScript 的时区,您应该使用。
Intl.DateTimeFormat().resolvedOptions().timeZone
为什么要尝试使用隐藏变量?
1. Using 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. Using Session
- 您可以在
$(document).ready
上使用 $.ajax()
将正确的时区值发送到您的 PHP 文件。
- 在 PHP 中,如果您的会话变量未设置,则通过 Ajax 请求进行设置。
- 不要忘记在 PHP 第一行使用
session_start()
。
参考文档
- Intl.DateTimeFormat
- Set cookie with JS and Read in PHP
- Get user timezone in JS + PHP
console.log(Intl.DateTimeFormat().resolvedOptions().timeZone)
通过会话:
<?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>';
}
?>
我想从 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'];
要获得 JavaScript 的时区,您应该使用。
Intl.DateTimeFormat().resolvedOptions().timeZone
为什么要尝试使用隐藏变量?
1. Using 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. Using Session
- 您可以在
$(document).ready
上使用$.ajax()
将正确的时区值发送到您的 PHP 文件。 - 在 PHP 中,如果您的会话变量未设置,则通过 Ajax 请求进行设置。
- 不要忘记在 PHP 第一行使用
session_start()
。
参考文档
- Intl.DateTimeFormat
- Set cookie with JS and Read in PHP
- Get user timezone in JS + PHP
console.log(Intl.DateTimeFormat().resolvedOptions().timeZone)
通过会话:
<?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>';
}
?>