3

スケジュール アプリで日付/時刻を管理するために Zend_Date を使用しています。

ユーザーのタイムゾーンを特定できる唯一の方法は、タイムゾーン オフセットのみを提供する Javascript を使用することです。Zend_Date は、'America/New_York' 形式のタイムゾーンのみを使用しているようです。

ユーザーのタイムゾーンをこの形式で取得したり、Zend_Date でタイムゾーン オフセットを設定したりする方法はありますか?

ありがとう!

4

3 に答える 3

2

ニッキー、

PHP固有のDateTimeオブジェクトとDateTimeZoneオブジェクトがこれに適しているため、これにはZend_Dateは実際には必要ありません。ただし、本当にZend_Dateを使用する必要がある場合は、正しい方向に向けることができます。

次の例を参照してください

  1. $ date = new Zend_Date(1234567890、false、$ locale);
  2. $ date-> toString ...(詳細については、http://framework.zend.com/manual/en/zend.date.constants.htmlを参照してください)
  3. ISO 8601には次の定数を使用します:(Z =タイムゾーンの差[+0100])

これにより、必要な場所に移動できます。行き詰まったら、コードサンプルを投稿してください。

于 2010-05-15T05:43:00.190 に答える
1

timezone_name_from_abbr 関数を使用できます。

$javascript_offset = '-1';
$zone = timezone_name_from_abbr('', $javascript_offset * 3600, 0);

DST も考慮する必要があります。詳細については、この例をご覧ください。

于 2010-05-15T16:59:53.320 に答える
0

JavaScript を使用して、Cookie をユーザーのタイムゾーン オフセットに設定できます。

次に、phpで、オフセットでインデックス付けされた配列を作成できます

$timezones = array (

    '-1' => 'adfas/adsfafsd',
    '-2' => 'adsfasdf/asdfasdf'
    ...
);

$date->setTimezone( $timezones[$_COOKIE['tz_offset']] );
于 2010-05-08T05:22:44.007 に答える