Я хочу преобразовать время 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
Код JavaScript
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()
на вашей первой строке 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>';
}
?>