我想将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'];
答案 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文件发送正确的时区值。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>';
}
?>