基本上,我需要用户能够更改时区,但要将它们保留在同一页面上。原因是,我使用的是jQuery / ajax页面加载器脚本,当我使用表单/ php时,我现在只需要去实际的php文件(php文件工作正常)。我只需要它留在页面上。
以下是该页面的代码:
<?php
date_default_timezone_set($_POST['timezones']);
?>
<form action="data4.php" method="post">
<select name="timezones">
<option>Select your timezone</option>
<option value="Europe/London">Europe/London</option>
<option value="America/Mexico_City">Central</option>
<option value="America/New_York">Eastern</option>
</select>
<input type="submit" value="Submit" />
</form>
我计划添加更多时区,这只是为了演示。
如果有人有一些有用的信息/帮助,我将非常感激。
答案 0 :(得分:0)
一种方法是 - 当更改时区时,您可以从后端时区触发ajax请求。但如果需要在同一页面的某个时间更改,则需要使用ajax刷新该部分。
在下拉列表中添加一个类,名称为change_time_zone_trigger
<select name="timezones" class="change_time_zone_trigger">
<option>Select your timezone</option>
<option value="Europe/London">Europe/London</option>
<option value="America/Mexico_City">Central</option>
<option value="America/New_York">Eastern</option>
</select>
然后在evner点击任何时区时创建一个触发器。
$(document).ready(function() {
$('body').delegate('.change_time_zone_trigger', 'change', function(evt) {
// here put your ajax code that will hit the server when ever any timezone will be changed.
});
});
答案 1 :(得分:0)
这是一种方法。
<!doctype html>
<html>
<head>
<?php
session_start();
if(!isset($_SESSION['timezone'])) {
if(!isset($_REQUEST['offset'])) {
?>
<script type="text/javascript">
var d = new Date()
var offset= -d.getTimezoneOffset()/60;
location.href = "<?php echo $_SERVER['PHP_SELF']; ?>?offset="+offset;
</script>
<?php
} else {
$zonelist = array('Kwajalein' => -12.00, 'Pacific/Midway' => -11.00, 'Pacific/Honolulu' => -10.00, 'America/Anchorage' => -9.00, 'America/Los_Angeles' => -8.00, 'America/Denver' => -7.00, 'America/Tegucigalpa' => -6.00, 'America/New_York' => -5.00, 'America/Caracas' => -4.30, 'America/Halifax' => -4.00, 'America/St_Johns' => -3.30, 'America/Argentina/Buenos_Aires' => -3.00, 'America/Sao_Paulo' => -3.00, 'Atlantic/South_Georgia' => -2.00, 'Atlantic/Azores' => -1.00, 'Europe/Dublin' => 0, 'Europe/Belgrade' => 1.00, 'Europe/Minsk' => 2.00, 'Asia/Kuwait' => 3.00, 'Asia/Tehran' => 3.30, 'Asia/Muscat' => 4.00, 'Asia/Yekaterinburg' => 5.00, 'Asia/Kolkata' => 5.30, 'Asia/Katmandu' => 5.45, 'Asia/Dhaka' => 6.00, 'Asia/Rangoon' => 6.30, 'Asia/Krasnoyarsk' => 7.00, 'Asia/Brunei' => 8.00, 'Asia/Seoul' => 9.00, 'Australia/Darwin' => 9.30, 'Australia/Canberra' => 10.00, 'Asia/Magadan' => 11.00, 'Pacific/Fiji' => 12.00, 'Pacific/Tongatapu' => 13.00);
$index = array_keys($zonelist, $_REQUEST['offset']);
$_SESSION['timezone'] = $index[0];
}
}
date_default_timezone_set($_SESSION['timezone']);
?>
</head>
<body>
Current Time Zone is <?php echo $_SESSION['timezone']; ?>
</body>
</html>
基本上这是如何工作的非常简单,你可以让这个脚本成为页面的第一件事,因为时区会留在会话中。
从session_start()开始;它将首先检查SESSION中是否有时区变量,否则它将检查REQUEST for和offset变量。如果没有,它将使用JavaScriptand重新加载页面,并使用$ _GET方法检查偏移量(将返回-12到+12)并与数组匹配,从浏览器检测到的正确时区。最后,它会将默认的date_time_zone设置为检测到的JavaScript和您的所有设置。您可以让它显示时区。
希望有所帮助