我想将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。使用会话
- 你可以在
- 在PHP中,如果你的会话变量没有设置,那么通过Ajax请求设置它。 不要忘记在PHP的第一行使用
$(document).ready
上使用$.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>';
}
?>