5

たとえば、次のように関数を入力できます。

echo findtimeinworld('<some way to format Sydney, Australia>'); // The current time in Sydney, Australia in a timestamp

そのような機能はどのようにして可能になるのでしょうか?

また、ここではホストされたサーバーで作業しているため、サーバー時間は何でもかまいません。

可能な限り最小の機能に対するボーナス投票。

4

4 に答える 4

2

照会するすべての都市のタイム ゾーン情報を含むデータベースが必要になります。次に、現在のサーバー時間に合わせてタイム ゾーンを調整します。

ここにタイム ゾーン データベースがあります。タイムゾーン情報をファイルにダンプするための C コードが付属しているようです。ファイルは、うまくいけば、データベース テーブルにインポートできます。これがあれば、世界中のどの都市でも、1 年中いつでもタイム ゾーンを調整できるはずです。

于 2012-11-23T06:50:58.473 に答える
1

このWebサービスをチェックしてください。これは、現地時間とともに都市のタイムゾーンを達成するのに役立ちます.

http://www.earthtools.org/webservices.htm#timezone

これがその例です(ニューヨークの場合)。

http://www.earthtools.org/timezone-1.1/40.71417/-74.00639

いくつかの使用制限があることに注意してください。

  1. これらの Web サービスに対して、1 秒間に複数のリクエストを行うことはできません。

  2. 24 時間以内に別の同一のリクエストを行う必要があると思われる場合は、結果をキャッシュする必要があります。

  3. キャッシュされたデータが不要になったら、いずれにしても 14 日後に削除する必要があります。

于 2012-11-23T06:52:46.307 に答える
0
date_default_timezone_set('Europe/London');
date_default_timezone_get();

これを試して。

于 2012-11-23T06:47:35.517 に答える
0

日付と時刻の関数はサーバーに従って機能するため、日付と時刻の関数を呼び出す前にタイムゾーンを手動で設定する必要があります。また、渡された引数に応じて時間を表示する関数が必要なので、渡された引数に応じてタイムゾーンを設定するのが効率的な方法です。そのためには、データベースまたはおそらくタイムゾーンの配列 (配列は数百のインデックスで大きすぎる) を必要とし、それに応じてそれらを一致させます。

以下は短い擬似コードです

echo findtimeinworld('COUNTRY/CITY'); //findtimeinworld('Australia/Melbourne');

    function findtimeinworld($suppliedTZ){

        //Match $suppliedTZ with timezone database for complete match
        //if match found
        date_default_timezone_set('returned timezone'); 
        //else if match not found
        //match for first part ex Australia and limit the result to 1
        //if match found
        date_default_timezone_set('first returned timezone'); 
        //else if match not found
        date_default_timezone_set('your default timezone');

        //put date and time functions here
    }
于 2012-11-23T07:03:31.083 に答える