私のサーバーのすべての日付/時刻フィールドにUTCの日付と時刻が表示されています。私のWebサーバーのタイムゾーン設定に戻ってきました。 UTCの時間...私の質問は、どうすればローカルのユーザーの日時にこれらを作ることができますか?すべての時間は、MySQLサーバのUTCに格納されます。UTCの問題(PHP/MySQL)
私はユーザーが市、地域(Prov/State)と国を持っています。最悪のケースPHPのデフォルトタイムゾーンで日付と時刻を表示したいと思います。
どうすればよいですか?
私のサーバーのすべての日付/時刻フィールドにUTCの日付と時刻が表示されています。私のWebサーバーのタイムゾーン設定に戻ってきました。 UTCの時間...私の質問は、どうすればローカルのユーザーの日時にこれらを作ることができますか?すべての時間は、MySQLサーバのUTCに格納されます。UTCの問題(PHP/MySQL)
私はユーザーが市、地域(Prov/State)と国を持っています。最悪のケースPHPのデフォルトタイムゾーンで日付と時刻を表示したいと思います。
どうすればよいですか?
この関数を使用して、ユーザーの場所「Perth、WA、Australia」をアドレスとして渡すことができます。
失敗した場合に0を返す代わりに、サーバータイムゾーンとデフォルトのPHPタイムゾーンの間のオフセットを返すことができます。
これをセッション変数に格納し、変数が空の場合にのみ関数を呼び出すと、ページレンダリングの速度が向上します。
/**
* This function finds the geocode of any given place using the geocoding service of yahoo
* @example getGeoCode("White House, Washington");
* @example getGeoCode("Machu Pichu");
* @example getGeoCode("Dhaka");
* @example getGeoCode("Hollywood");
*
* @param string address - something you could type into Yahoo Maps and get a valid result
* @return int timeZoneOffset - the number of seconds difference between the user's timezone and your server's timezone, 0 if it fails.
*/
function getTimeZoneOffset($address) {
$_url = 'http://api.local.yahoo.com/MapsService/V1/geocode';
$_url .= sprintf('?appid=%s&location=%s',"phpclasses",rawurlencode($address));
$_result = false;
if($_result = file_get_contents($_url)) {
preg_match('!<Latitude>(.*)</Latitude><Longitude>(.*)</Longitude>!U', $_result, $_match);
$lng = $_match[2];
$lat = $_match[1];
$url = "http://ws.geonames.org/timezone?lat={$lat}&lng={$lng}";
$timedata = file_get_contents($url);
$sxml = simplexml_load_string($timedata);
$timeZoneOffset = strtotime($sxml->timezone->time) - time();
return $timeZoneOffset;
}
else
return 0;
}
コードTime Engine、LGPL PHPクラスから適応します。
MySQLでは、dbからデータを選択するときに、すべての日付を現在のタイムゾーンに変換するために、関数CONVERT_TZを使用することができます。別のstackoverflowスレッドで説明されていますhow to convert time zones using PHP 5's DateTime class.