たとえば、次のように関数を入力できます。
echo findtimeinworld('<some way to format Sydney, Australia>'); // The current time in Sydney, Australia in a timestamp
そのような機能はどのようにして可能になるのでしょうか?
また、ここではホストされたサーバーで作業しているため、サーバー時間は何でもかまいません。
可能な限り最小の機能に対するボーナス投票。
照会するすべての都市のタイム ゾーン情報を含むデータベースが必要になります。次に、現在のサーバー時間に合わせてタイム ゾーンを調整します。
ここにタイム ゾーン データベースがあります。タイムゾーン情報をファイルにダンプするための C コードが付属しているようです。ファイルは、うまくいけば、データベース テーブルにインポートできます。これがあれば、世界中のどの都市でも、1 年中いつでもタイム ゾーンを調整できるはずです。
このWebサービスをチェックしてください。これは、現地時間とともに都市のタイムゾーンを達成するのに役立ちます.
http://www.earthtools.org/webservices.htm#timezone
これがその例です(ニューヨークの場合)。
http://www.earthtools.org/timezone-1.1/40.71417/-74.00639
いくつかの使用制限があることに注意してください。
これらの Web サービスに対して、1 秒間に複数のリクエストを行うことはできません。
24 時間以内に別の同一のリクエストを行う必要があると思われる場合は、結果をキャッシュする必要があります。
キャッシュされたデータが不要になったら、いずれにしても 14 日後に削除する必要があります。
date_default_timezone_set('Europe/London');
date_default_timezone_get();
これを試して。
日付と時刻の関数はサーバーに従って機能するため、日付と時刻の関数を呼び出す前にタイムゾーンを手動で設定する必要があります。また、渡された引数に応じて時間を表示する関数が必要なので、渡された引数に応じてタイムゾーンを設定するのが効率的な方法です。そのためには、データベースまたはおそらくタイムゾーンの配列 (配列は数百のインデックスで大きすぎる) を必要とし、それに応じてそれらを一致させます。
以下は短い擬似コードです
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
}