2012-05-13 10 views
0

私はこのプロセスを正しく理解していることを確認するためにこの投稿を作成しています。ポストタイムは、さまざまなタイムゾーンのユーザーに対して正しく表示および格納されます。PHPは保存された時間データを表示し、異なる時間帯を考慮しながら時間データを保存します

時間を記憶

最初のステップは、GMTのJavaScript関数を使用してフォーマットをオフセットとしてユーザのタイムゾーンを取得し、セッション変数に格納されています。たとえば、$ timezone変数にはGMT -4が格納されます。

$timezone=$_SESSION['time']; 

次に、ユーザーにタイムゾーンを設定すると、次のようになります。ユーザーが投稿を作成すると、投稿時刻をmysqlデータベースに保存します。これをUTC形式で保存する必要があります。私はこれをどのようにして行うのですか?現在私は時刻データを保存しています。それは次のようなものです。私のスタンプフィールドは日時フォーマットであり、できるだけそのまま残したいと思っています。

INSERT INTO posts (stamp) VALUES (now()) 

now()の代わりに私のデータベースに挿入されるUTC形式を取得する関数は何ですか? $ timezoneを使用してUTC日付を生成するPHP関数を使用する必要があると仮定します。時間

次の表示

、UTCの日付がDBに格納されると。私が設定した$ timezone変数に基づいて、ユーザーにデータを表示する必要があります。私は時間を表示するとき

だから、私は現在、私は、これはUTC時刻を表示する、UTC時刻などのデータを保存している

echo date('F d', strtotime($list1['stamp'])); 

を行うたら、しかし、私はUTCが彼らのためにオフセットをユーザーに示す必要があります私は$list['stamp']をUTC時間で$ timezoneを使ってユーザーのタイムゾーンに変換する必要があります。これのために私はどのような機能を持っていますか?

tl:dr これは私がこの作業を行うために必要なものです。あなたが何か提案や、私が考慮していない項目があるかどうか、また、データベースに格納するために時間をUTCに変換するためにどの機能を使用する必要があるのか​​わかっている場合、UTC時間$ timezone変数を使用してユーザーを表示します。データベースにUTC時刻を挿入するための

+1

正解ではありませんが、DateTimeクラスとそのsetTimezoneメソッドが過去にかなり有用であることがわかりました。 – Corbin

+0

クールな感謝、私はそれを調べます。 – arboles

答えて

1

INSERT INTO posts (stamp) VALUES (UTC_DATE()) 

UPDATE:これは、あなたのデータベースにYYYY-MM-DDを挿入します。あなたにも時間が必要な場合は、使用します。

INSERT INTO posts (stamp) VALUES (UTC_TIMESTAMP()) 

をその後の時間帯に応じて日付を印刷するために:

$date = date_create($list1['stamp'], timezone_open($timezone)); //$timezone='Pacific/Nauru'; 
echo date_format($date, 'F d'); 

あなたが始めるのに役立つ必要があること。オブジェクト指向メソッドのPHPの詳細については、DateTime Classを参照してください。

+0

恐縮です。timezone_open()は$ timezone = 'Pacific/Nauru'か$ timezone = 'GMT -4'を必要としますか?GMT -4を 'Pacific/Nauru'に変換するにはどうすればよいですか? ) – arboles

+0

私はあなたがUTC_DATE()ではないmysql関数UTC_TIMESTAMP()が必要だと思う – user570783

+0

クールな感謝。 UTC_DATEではなくUTC_TIMESTAMPを使用して日付を保存する必要がありますか?これはdatetime形式のmy_sqlスタンプデータベースフィールドに関連していますか? – arboles

関連する問題