PHP と MySQL でいくつかの Web サイト (ニュース ポータル) に取り組んでいます。ニュースが投稿されたときの時間とともに、ルーブリックの最後の投稿があります。私のタイムゾーンとサーバーのタイムゾーンは GMT+2 です。すべてのタイム ゾーンのすべてのクライアントに時刻を正しく表示したいと考えています。たとえば、ニュースが私のタイムゾーンに投稿され、 からのクライアント、ゾーンからの13:05
クライアント、などに表示される場合。どうやってするか?その目的のためにMySQLデータベースに日付と時刻を保存する最良の方法は何ですか? また、自分の Web サイトにCarbonを統合していますが、その方法が見つかりません。GMT+3
14:05
GMT+4
15:05
GMT+1
12:05
3 に答える
以下のようなUTCタイムゾーンでdbストアに値を保存している間
date_default_timezone_set('UTC');
次に、値を表示しながらタイムゾーンjsを使用してユーザーのタイムゾーンを取得し、ajaxを使用してタイムゾーンをサーバーに送信してSESSION変数に保存し、日付を表示しながらそのタイムゾーンを追加します。例 1) https://bitbucket.org/pellepim/jstimezonedetect/srcからタイムゾーン js をダウンロードします。
以下はタイムゾーンを提供します
var tz = jstz.determine(); // Determines the time zone of the browser client
var timezone=tz.name(); // Returns the name of the time zone eg "Europe/Berlin"
以下のように ajax 呼び出しを行います
$.post("scripts/set_timezone.php", { タイムゾーン: タイムゾーン} );
そしてset_timezone.phpにコードがあります
session_start();
$_SESSION['user_timezone'] = $_POST['timezone'];
そして、次のように表示を表示しながら
$date = new DateTime('2012-01-23 05:00:00', new DateTimeZone('UTC'));
$date->setTimezone(new DateTimeZone($_SESSION['user_timezone']));//This will from the session e.g Asia/Kolkata
$time= $date->format('Y-m-d H:i:s');
- 日付をタイムスタンプに保持します。
- すべてのクライアントのタイムゾーンを保存します。
データベースへの接続を確立した後、次のようにクエリを実行します。
SET @@session.time_zone = "+02:00";
また
SET @@session.time_zone = "Europe/Warsaw";
タイムゾーンのオフセットまたは名前は、クライアント用に保存された値です。
すべてのタイムスタンプ値は、定義されたタイムゾーンでクエリから返されます。
当社で行っていることは、常に GMT で保存することです。私たちは南アフリカにいますが。次に、ユーザーの場所に基づいて、時間を正しく表示するように変換します。ユーザーがどこにいるかを特定して時刻を換算する方法はいくつかありますが、最も簡単な方法は、ユーザーがどこに住んでいるかを尋ねて、その情報を保存することです。