Обнаружение TIMEZONE с помощью jQuery и в сочетании с переполнением стека

Я хочу преобразовать время 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/

1

Решение

Чтобы получить часовой пояс в 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.
  • В PHP, если ваша переменная сеанса не установлена, установите ее с помощью Ajax-запроса.
  • Не забудьте использовать session_start() на вашей первой строке PHP.

Справочная документация

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

Другие решения

через сессию:

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

По вопросам рекламы [email protected]