1

基本的に、ユーザーがタイムゾーンを変更できるようにする必要がありますが、それらを同じページに保持します。この理由は、私は 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>

タイムゾーンをさらに追加する予定はありますが、これは単なるデモンストレーション用です。

誰かが有用な情報/ヘルプを持っていれば、私は非常に感謝しています.

4

2 に答える 2

0

ここに1つの方法があります。

<!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 に timezone 変数があるかどうかを確認し、そうでない場合は REQUEST とオフセット変数を確認します。そうでない場合は、JavaScript を使用し、$_GET メソッドを使用してブラウザーから検出した正しいタイムゾーンでページをリロードし、オフセット (-12 から +12 を返す) をチェックし、配列と照合します。最後に、デフォルトの date_time_zone を検出された JavaScript とすべてのセットに設定します。タイムゾーンを表示させることができます。

それが役立つことを願っています

于 2013-11-13T10:40:02.563 に答える
0

1つの方法は、タイムゾーンを変更すると、バックエンドのタイムゾーンが変更されるときに、ajaxリクエストを起動できます。ただし、同じページのどこかの時間を変更する必要がある場合は、そのセクションも ajax で更新する必要があります。

ドロップダウンに 1 つのクラスを追加します。名前は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.

  });

});
于 2013-11-13T10:15:45.850 に答える