Gibt es eine Standardmethode für einen Webserver, um die Zeitzone eines Benutzers innerhalb einer Webseite zu bestimmen?
Vielleicht aus einem HTTP-Header oder einem Teil der user-agent
Zeichenfolge?
Gibt es eine Standardmethode für einen Webserver, um die Zeitzone eines Benutzers innerhalb einer Webseite zu bestimmen?
Vielleicht aus einem HTTP-Header oder einem Teil der user-agent
Zeichenfolge?
Antworten:
-new Date().getTimezoneOffset()/60;
Die Methode getTimezoneOffset()
subtrahiert Ihre Zeit von GMT und gibt die Anzahl der Minuten zurück. Wenn Sie also in GMT-8 leben, wird 480 zurückgegeben.
Um dies in Stunden zu fassen, dividieren Sie durch 60. Beachten Sie auch, dass das Vorzeichen das Gegenteil von dem ist, was Sie benötigen - es berechnet den Versatz von GMT von Ihrer Zeitzone, nicht den Versatz Ihrer Zeitzone von GMT. Um dies zu beheben, multiplizieren Sie einfach mit -1.
Beachten Sie auch, dass w3school sagt:
Der zurückgegebene Wert ist aufgrund der Verwendung der Sommerzeit keine Konstante.
>>> date.toTimeString() "15:46:04 GMT+1200 (New Zealand Standard Time)"
Die beliebteste (== Standard?) Methode zur Bestimmung der Zeitzone, die ich gesehen habe, besteht darin, einfach die Benutzer selbst zu fragen. Wenn für Ihre Website ein Abonnement erforderlich ist, kann dieses in den Profildaten der Benutzer gespeichert werden. Für anon Benutzer können die Daten als UTC oder GMT oder ähnliches angezeigt werden.
Ich versuche nicht, ein kluger Kerl zu sein. Es ist nur so, dass manchmal einige Probleme außerhalb eines Programmierkontexts feinere Lösungen haben.
Bisher gibt es keine HTTP-Header, die die Zeitzone des Clients melden, obwohl vorgeschlagen wurde, sie in die HTTP-Spezifikation aufzunehmen.
Wenn ich es wäre, würde ich wahrscheinlich versuchen, die Zeitzone mit clientseitigem JavaScript abzurufen und sie dann mit Ajax oder etwas anderem an den Server zu senden.
JavaScript ist der einfachste Weg, um die Ortszeit des Clients abzurufen. Ich würde vorschlagen, eine XMLHttpRequest zu verwenden, um die Ortszeit zurückzusenden. Wenn dies fehlschlägt, greifen Sie auf die Zeitzone zurück, die anhand ihrer IP-Adresse ermittelt wurde.
In Bezug auf die Geolokalisierung habe ich MaxMind GeoIP in mehreren Projekten verwendet und es funktioniert gut, obwohl ich nicht sicher bin, ob sie Zeitzonendaten liefern. Es ist ein Service, für den Sie bezahlen und der monatliche Aktualisierungen Ihrer Datenbank bereitstellt. Sie bieten Wrapper in mehreren Web-Sprachen.
Verstehen Sie zunächst, dass die Zeitzonenerkennung in JavaScript nicht perfekt ist. Sie können die lokal bekommen Zeitzonen - Offset für ein bestimmtes Datum und die Uhrzeit mit getTimezoneOffset
auf einer Instanz des Date
Objekts, aber das ist nicht ganz das gleiche wie eine Voll IANA Zeitzone wie America/Los_Angeles
.
Es gibt jedoch einige Optionen, die funktionieren können:
const tzid = Intl.DateTimeFormat().resolvedOptions().timeZone;
console.log(tzid);
Das Ergebnis ist eine Zeichenfolge, die die IANA-Zeitzoneneinstellung des Computers enthält, auf dem der Code ausgeführt wird.
Unterstützte Umgebungen sind in der Intl-Kompatibilitätstabelle aufgeführt . Erweitern Sie den DateTimeFormat
Abschnitt und sehen Sie sich die genannte Funktion an resolvedOptions().timeZone defaults to the host environment
.
Einige Bibliotheken wie Luxon verwenden diese API, um die Zeitzone durch Funktionen wie zu bestimmen luxon.Settings.defaultZoneName
.
Intl
API, wenn sie verfügbar ist, und wenn sie nicht verfügbar ist, fragen sie die getTimezoneOffset
Funktion des Date
Objekts zu verschiedenen Zeitpunkten ab und verwenden die Ergebnisse, um eine geeignete Zeitzone aus einem internen Datensatz auszuwählen.Sowohl jsTimezoneDetect als auch moment-timezone verfügen über diese Funktionalität.
// using jsTimeZoneDetect
var tzid = jstz.determine().name();
// using moment-timezone
var tzid = moment.tz.guess();
In beiden Fällen kann das Ergebnis nur als Vermutung betrachtet werden. Die Vermutung mag in vielen Fällen richtig sein, aber nicht in allen.
Darüber hinaus müssen diese Bibliotheken regelmäßig aktualisiert werden, um der Tatsache entgegenzuwirken, dass viele ältere JavaScript-Implementierungen nur die aktuelle Sommerzeitregel für ihre lokale Zeitzone kennen. Mehr dazu hier.
Letztendlich ist es ein besserer Ansatz, Ihren Benutzer tatsächlich nach seiner Zeitzone zu fragen. Geben Sie eine Einstellung an, die sie ändern können. Sie können eine der oben genannten Optionen verwenden, um eine Standardeinstellung auszuwählen , aber machen Sie es nicht unmöglich, in Ihrer App davon abzuweichen.
Es gibt auch einen völlig anderen Ansatz, sich überhaupt nicht auf die Zeitzoneneinstellung des Computers des Benutzers zu verlassen. Wenn Sie stattdessen Längen- und Breitengradkoordinaten erfassen können, können Sie diese mit einer dieser Methoden in eine Zeitzone auflösen . Dies funktioniert gut auf mobilen Geräten.
Hier ist eine robuste JavaScript-Lösung, um die Zeitzone zu bestimmen, in der sich der Browser befindet.
>>> var timezone = jstz.determine();
>>> timezone.name();
"Europe/London"
https://bitbucket.org/pellepim/jstimezonedetect
Anhang 1: Jetzt befindet sich dieses Projekt auf GitHub: https://github.com/pellepim/jstimezonedetect
Hier ist ein vollständigerer Weg.
Ein Auszug ist unten:
function TimezoneDetect(){
var dtDate = new Date('1/1/' + (new Date()).getUTCFullYear());
var intOffset = 10000; //set initial offset high so it is adjusted on the first attempt
var intMonth;
var intHoursUtc;
var intHours;
var intDaysMultiplyBy;
// Go through each month to find the lowest offset to account for DST
for (intMonth=0;intMonth < 12;intMonth++){
//go to the next month
dtDate.setUTCMonth(dtDate.getUTCMonth() + 1);
// To ignore daylight saving time look for the lowest offset.
// Since, during DST, the clock moves forward, it'll be a bigger number.
if (intOffset > (dtDate.getTimezoneOffset() * (-1))){
intOffset = (dtDate.getTimezoneOffset() * (-1));
}
}
return intOffset;
}
TZ und DST von JS erhalten (über Way Back Machine)
Africa/Johannesburg
oder Europe/Istanbul
. Siehe das Zeitzonen-Tag-Wiki .
Mit dem Ansatz von Unkwntech habe ich eine Funktion mit jQuery und PHP geschrieben. Dies ist getestet und funktioniert!
Auf der PHP-Seite, auf der Sie die Zeitzone als Variable haben möchten, befindet sich dieser Codeausschnitt irgendwo oben auf der Seite:
<?php
session_start();
$timezone = $_SESSION['time'];
?>
Dies liest die Sitzungsvariable "Zeit", die wir jetzt erstellen werden.
Auf derselben Seite müssen Sie im <head> zunächst jQuery einschließen:
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
Fügen Sie auch im <head> unterhalb der jQuery Folgendes ein:
<script type="text/javascript">
$(document).ready(function() {
if("<?php echo $timezone; ?>".length==0){
var visitortime = new Date();
var visitortimezone = "GMT " + -visitortime.getTimezoneOffset()/60;
$.ajax({
type: "GET",
url: "http://example.org/timezone.php",
data: 'time='+ visitortimezone,
success: function(){
location.reload();
}
});
}
});
</script>
Möglicherweise haben Sie es bemerkt oder nicht, aber Sie müssen die URL in Ihre tatsächliche Domain ändern.
Eine letzte Sache. Sie fragen sich wahrscheinlich, was zum Teufel timezone.php ist. Nun, es ist einfach so: (Erstellen Sie eine neue Datei namens timezone.php und zeigen Sie mit der obigen URL darauf)
<?php
session_start();
$_SESSION['time'] = $_GET['time'];
?>
Wenn dies korrekt funktioniert, wird zuerst die Seite geladen, das JavaScript ausgeführt und die Seite neu geladen. Sie können dann die Variable $ timezone lesen und zu Ihrem Vergnügen verwenden! Es gibt den aktuellen UTC / GMT-Zeitzonenversatz (GMT -7) oder die Zeitzone zurück, in der Sie sich befinden.
Übermitteln des Zeitzonenversatzes als HTTP-Header bei AJAX-Anforderungen mit jQuery
$.ajaxSetup({
beforeSend: function(xhr, settings) {
xhr.setRequestHeader("X-TZ-Offset", -new Date().getTimezoneOffset()/60);
}
});
Sie können auch etwas ähnliches tun , um die tatsächlichen Zeitzonennamen , indem Sie erhalten moment.tz.guess();
von http://momentjs.com/timezone/docs/#/using-timezones/guessing-user-timezone/
Ich habe hier noch keine detaillierte Antwort gesehen, die die Zeitzone erhält. Sie sollten nicht nach IP-Adresse geocodieren oder PHP (lol) verwenden oder falsch von einem Offset raten müssen.
Erstens ist eine Zeitzone nicht nur ein Versatz von GMT. Es ist ein Gebiet, in dem die Zeitregeln durch lokale Standards festgelegt werden. Einige Länder haben Sommerzeit und schalten die Sommerzeit zu unterschiedlichen Zeiten ein. Normalerweise ist es wichtig, die tatsächliche Zone zu ermitteln, nicht nur den aktuellen Versatz.
Wenn Sie diese Zeitzone speichern möchten, beispielsweise in den Benutzereinstellungen, möchten Sie die Zone und nicht nur den Versatz. Für Echtzeitkonvertierungen spielt es keine Rolle.
Um die Zeitzone mit Javascript zu erhalten, können Sie Folgendes verwenden:
>> new Date().toTimeString();
"15:46:04 GMT+1200 (New Zealand Standard Time)"
//Use some regular expression to extract the time.
Ich fand es jedoch einfacher, einfach dieses robuste Plugin zu verwenden, das die Olsen-formatierte Zeitzone zurückgibt:
Mit der PHP- date
Funktion erhalten Sie das Datum und die Uhrzeit des Servers, auf dem sich die Site befindet. Die einzige Möglichkeit, die Benutzerzeit zu ermitteln, ist die Verwendung von JavaScript.
Ich empfehle Ihnen jedoch, wenn für Ihre Website eine Registrierung erforderlich ist, der Benutzer am besten zu fragen, ob eine Registrierung als Pflichtfeld erforderlich ist. Sie können verschiedene Zeitzonen auf der Registerseite auflisten und in der Datenbank speichern. Wenn sich der Benutzer danach bei der Site anmeldet, können Sie die Standardzeitzone für diese Sitzung gemäß der vom Benutzer ausgewählten Zeitzone festlegen.
Mit der PHP-Funktion können Sie eine bestimmte Zeitzone einstellen date_default_timezone_set
. Dadurch wird die angegebene Zeitzone für Benutzer festgelegt.
Grundsätzlich geht die Zeitzone der Benutzer auf die Clientseite, daher müssen wir dafür JavaScript verwenden.
Unten finden Sie das Skript zum Abrufen der Zeitzone von Benutzern mithilfe von PHP und JavaScript.
<?php
#http://www.php.net/manual/en/timezones.php List of Time Zones
function showclienttime()
{
if(!isset($_COOKIE['GMT_bias']))
{
?>
<script type="text/javascript">
var Cookies = {};
Cookies.create = function (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=/";
this[name] = value;
}
var now = new Date();
Cookies.create("GMT_bias",now.getTimezoneOffset(),1);
window.location = "<?php echo $_SERVER['PHP_SELF'];?>";
</script>
<?php
}
else {
$fct_clientbias = $_COOKIE['GMT_bias'];
}
$fct_servertimedata = gettimeofday();
$fct_servertime = $fct_servertimedata['sec'];
$fct_serverbias = $fct_servertimedata['minuteswest'];
$fct_totalbias = $fct_serverbias – $fct_clientbias;
$fct_totalbias = $fct_totalbias * 60;
$fct_clienttimestamp = $fct_servertime + $fct_totalbias;
$fct_time = time();
$fct_year = strftime("%Y", $fct_clienttimestamp);
$fct_month = strftime("%B", $fct_clienttimestamp);
$fct_day = strftime("%d", $fct_clienttimestamp);
$fct_hour = strftime("%I", $fct_clienttimestamp);
$fct_minute = strftime("%M", $fct_clienttimestamp);
$fct_second = strftime("%S", $fct_clienttimestamp);
$fct_am_pm = strftime("%p", $fct_clienttimestamp);
echo $fct_day.", ".$fct_month." ".$fct_year." ( ".$fct_hour.":".$fct_minute.":".$fct_second." ".$fct_am_pm." )";
}
showclienttime();
?>
Aus meiner Sicht ist es jedoch besser, die Benutzer zu fragen, ob eine Registrierung in Ihrem Projekt obligatorisch ist.
Verwenden Sie die IP-Adresse nicht, um den Standort (und damit die Zeitzone) endgültig zu bestimmen. Dies liegt daran, dass IP-Adressen bei NAT, Proxys (die immer beliebter werden) und VPNs nicht unbedingt den tatsächlichen Standort des Benutzers realistisch widerspiegeln, sondern den Standort, an dem sich die IP-Adresse befindet Server, die diese Protokolle implementieren, befinden sich.
Ähnlich wie US-Vorwahlen angesichts der Beliebtheit der Nummernübertragbarkeit für die Lokalisierung eines Telefonbenutzers nicht mehr nützlich sind.
Die IP-Adresse und andere oben gezeigte Techniken sind nützlich, um einen Standard vorzuschlagen , den der Benutzer anpassen / korrigieren kann.
JavaScript:
function maketimus(timestampz)
{
var linktime = new Date(timestampz * 1000);
var linkday = linktime.getDate();
var freakingmonths = new Array();
freakingmonths[0] = "jan";
freakingmonths[1] = "feb";
freakingmonths[2] = "mar";
freakingmonths[3] = "apr";
freakingmonths[4] = "may";
freakingmonths[5] = "jun";
freakingmonths[6] = "jul";
freakingmonths[7] = "aug";
freakingmonths[8] = "sep";
freakingmonths[9] = "oct";
freakingmonths[10] = "nov";
freakingmonths[11] = "dec";
var linkmonthnum = linktime.getMonth();
var linkmonth = freakingmonths[linkmonthnum];
var linkyear = linktime.getFullYear();
var linkhour = linktime.getHours();
var linkminute = linktime.getMinutes();
if (linkminute < 10)
{
linkminute = "0" + linkminute;
}
var fomratedtime = linkday + linkmonth + linkyear + " " +
linkhour + ":" + linkminute + "h";
return fomratedtime;
}
Geben Sie für diese Funktion einfach Ihre Zeiten im Unix-Zeitstempelformat an. JavaScript kennt bereits die Zeitzone des Benutzers.
So was:
PHP:
echo '<script type="text/javascript">
var eltimio = maketimus('.$unix_timestamp_ofshiz.');
document.write(eltimio);
</script><noscript>pls enable javascript</noscript>';
Dadurch werden die Zeiten immer korrekt angezeigt, basierend auf der Zeitzone, die die Person auf ihrer Computeruhr eingestellt hat. Es ist nicht nötig, irgendjemanden etwas zu fragen und es an Orten aufzubewahren, Gott sei Dank!
Einfach, verwenden Sie einfach die JavaScript- getTimezoneOffset
Funktion wie folgt:
-new Date().getTimezoneOffset()/60;
Die Magie scheint alles zu sein
visitortime.getTimezoneOffset()
Das ist cool, das wusste ich nicht. Funktioniert es in Internet Explorer usw.? Von dort aus sollten Sie in der Lage sein, JavaScript für Ajax zu verwenden, Cookies zu setzen, was auch immer. Ich würde wahrscheinlich selbst die Cookie-Route gehen.
Sie müssen dem Benutzer jedoch erlauben, es zu ändern. Wir haben vor einiger Zeit versucht, Geolocation (über maxmind) zu verwenden, um dies zu tun, und es war ziemlich oft falsch - genug, um es nicht wert zu machen, also ließen wir den Benutzer es einfach in seinem Profil festlegen und zeigten Benutzern, die dies tun habe ihre noch nicht eingestellt.
In diesem Artikel (mit Quellcode) wird erläutert, wie die lokalisierte Zeit in einer ASP.NET-Anwendung (VB.NET, C #) ermittelt und verwendet wird:
Kurz gesagt, der beschriebene Ansatz basiert auf der JavaScript- getTimezoneOffset
Funktion, die den Wert zurückgibt, der im Sitzungscookie gespeichert und von CodeBehind zum Anpassen der Zeitwerte zwischen GMT und Ortszeit verwendet wird. Das Schöne ist, dass der Benutzer die Zeitzone nicht angeben muss (der Code erledigt dies automatisch). Es ist mehr involviert (aus diesem Grund verlinke ich auf den Artikel), aber der bereitgestellte Code macht die Verwendung wirklich einfach. Ich vermute, dass Sie die Logik in PHP und andere Sprachen konvertieren können (solange Sie ASP.NET verstehen).
Wenn Sie OpenID zur Authentifizierung verwenden, löst die Simple Registration Extension das Problem für authentifizierte Benutzer (Sie müssen von tz in numerisch konvertieren).
Eine andere Möglichkeit wäre, die Zeitzone aus den Länderpräferenzen des Benutzeragenten abzuleiten. Dies ist eine etwas grobe Methode (funktioniert nicht für en-US), macht aber eine gute Annäherung.
Mit JavaScript und PHP ist das ganz einfach:
Obwohl der Benutzer mit seiner internen Uhr und / oder Zeitzone herumspielen kann, bleibt der beste Weg, den ich bisher gefunden habe, um den Offset zu erhalten new Date().getTimezoneOffset();
. Es ist nicht invasiv, verursacht keine Kopfschmerzen und macht es überflüssig, sich auf Dritte zu verlassen.
Angenommen, ich habe eine Tabelle, users
die ein Feld date_created int(13)
zum Speichern von Unix-Zeitstempeln enthält.
Unter der Annahme einen Client creates a new account
, Daten empfingen durch post
, und ich brauche , um insert/update
die date_created column
mit dem Unix - Zeitstempel des Clients, nicht dem Server.
Da das timezoneOffset zum Zeitpunkt des Einfügens / Aktualisierens benötigt wird, wird es beim Senden des Formulars als zusätzliches $ _POST-Element übergeben, sodass es nicht mehr in Sitzungen und / oder Cookies gespeichert werden muss und auch keine zusätzlichen Servertreffer erforderlich sind.
var off = (-new Date().getTimezoneOffset()/60).toString();//note the '-' in front which makes it return positive for negative offsets and negative for positive offsets
var tzo = off == '0' ? 'GMT' : off.indexOf('-') > -1 ? 'GMT'+off : 'GMT+'+off;
Angenommen, der Server empfängt tzo
als $_POST['tzo']
;
$ts = new DateTime('now', new DateTimeZone($_POST['tzo']);
$user_time = $ts->format("F j, Y, g:i a");//will return the users current time in readable format, regardless of whether date_default_timezone() is set or not.
$user_timestamp = strtotime($user_time);
Einfügen / aktualisieren date_created=$user_timestamp
.
Beim Abrufen von date_created können Sie den Zeitstempel folgendermaßen konvertieren:
$date_created = // Get from the database
$created = date("F j, Y, g:i a",$date_created); // Return it to the user or whatever
Dieses Beispiel entspricht möglicherweise den Anforderungen beim Einfügen eines first
Zeitstempels. Wenn es sich um einen zusätzlichen Zeitstempel oder eine zusätzliche Tabelle handelt, sollten Sie den tzo-Wert zur späteren Bezugnahme in die Benutzertabelle einfügen oder festlegen als Sitzung oder als Cookie.
PS ABER was ist, wenn der Benutzer reist und die Zeitzonen wechselt? Loggt sich bei GMT + 4 ein, fährt schnell zu GMT-1 und meldet sich erneut an. Der letzte Login würde in der Zukunft sein.
Ich denke ... wir denken zu viel.
Sie können dies auf dem Client mit der Zeitzone tun und den Wert an den Server senden. Beispielnutzung:
> moment.tz.guess()
"America/Asuncion"
Das Abrufen eines gültigen Zeitzonennamens für die TZ-Datenbank in PHP erfolgt in zwei Schritten:
Mit JavaScript erhalten Sie einen Zeitzonenversatz in Minuten getTimezoneOffset
. Dieser Offset ist positiv, wenn die lokale Zeitzone hinter UTC liegt, und negativ, wenn sie vor uns liegt. Sie müssen dem Offset also ein entgegengesetztes Vorzeichen hinzufügen.
var timezone_offset_minutes = new Date().getTimezoneOffset();
timezone_offset_minutes = timezone_offset_minutes == 0 ? 0 : -timezone_offset_minutes;
Übergeben Sie diesen Offset an PHP.
In PHP konvertieren Sie diesen Offset in einen gültigen Zeitzonennamen mit der Funktion timezone_name_from_abbr .
// Just an example.
$timezone_offset_minutes = -360; // $_GET['timezone_offset_minutes']
// Convert minutes to seconds
$timezone_name = timezone_name_from_abbr("", $timezone_offset_minutes*60, false);
// America/Chicago
echo $timezone_name;</code></pre>
Ich habe einen Blog-Beitrag darüber geschrieben: So erkennen Sie die Benutzerzeitzone in PHP . Es enthält auch eine Demo.
Intl.DateTimeFormat().resolvedOptions().timeZone
und an den Webserver zu senden. Ref: stackoverflow.com/questions/9772955/…
Ein einfacher Weg, dies zu tun, ist die Verwendung von:
new Date().getTimezoneOffset();
Eine mögliche Option ist die Verwendung des Date
Header-Felds, das in RFC 7231 definiert ist und die Zeitzone enthalten soll. Natürlich kann nicht garantiert werden, dass der Wert wirklich die Zeitzone des Kunden ist, aber es kann ein bequemer Ausgangspunkt sein.
Hier ist, wie ich es mache. Dadurch wird die PHP-Standardzeitzone auf die lokale Zeitzone des Benutzers festgelegt. Fügen Sie einfach oben auf all Ihren Seiten Folgendes ein:
<?php
session_start();
if(!isset($_SESSION['timezone']))
{
if(!isset($_REQUEST['offset']))
{
?>
<script>
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']);
//rest of your code goes here
?>