2011-10-19 4 views
1

私は仕事のためのスケジューリングWebアプリケーションを開発中で、非常に奇妙な問題を抱えています。アプリケーションはDjangoとFullCalendarを使用します。アプリケーションでは、ユーザはFullCalendarでイベントを作成でき、開始時刻と終了時刻はPostgreSQLデータベースにDateTimeフィールドとして格納されます。イベントがカレンダーに返されると、私はDjango DateTagを使って時間をUnixTimestampに変換します。タイムスタンプがすべてのイベントに対してランダムに1時間早く返されることを除いて、すべてが完全に機能します。数回ごとに、タイムスタンプが1時間遅れるようにページにアクセスします。Djangoタイムスタンプの不一致

誰もが同様の問題を経験して修正を見つけることができましたか?

答えて

2

これがライブサーバーである場合は、おそらくあなたは確認する必要があります。タイムスタンプ設定のためのconfファイル?例えば

あなたは/etc/httpd/conf/httpd.conf

でそれを見つけて、私はページを更新する際の問題は、時にはそれが正しいだ時間を切り、他の回だている次の行にsetenv TZ America/<Timezone>

+0

これで問題は解決しました。ありがとうございました!私がリフレッシュするたびにランダムに時間が違うのは不思議ですが、これをhttpd.confに追加することで問題は解決しました。 – nates

3

疑いの余地は、タイムゾーンの問題のように聞こえるかもしれません。
あなたはこれらの違いと認識していますtypes in PostgreSQL

timestamp 
timestamp with time zone 

注違い:

db=# SELECT '2011-10-20 10:00+1'::timestamp;                                         timestamp 
--------------------- 
2011-10-20 10:00:00 


db=# SELECT '2011-10-20 10:00+1'::timestamp AT TIME ZONE '-1'; 
     timezone 
------------------------ 
2011-10-20 11:00:00+02 

あなたはchapter on time zonesで手掛かりを見つけることができます。


タイムスタンプ列の変換は簡単です。例えば、特定のタイムゾーン、「UTC」に、すべての回を変換するには

ALTER TABLE tbl ALTER col TYPE timestamp; 

:ちょうどタイムゾーンの一部を切断するには

ALTER TABLE tbl ALTER col TYPE timestamp USING col::timestamp AT TIME ZONE 'UTC'; 
+0

を追加することができます。現在、タイムゾーンタイプのタイムスタンプを使用しています。 – nates

+0

'with time zone'が必要ですか?そうでなければ、 'timestamp'に切り替えるだけで問題を解決できます。あなたのテーブルの列を変換します。私は私の答えにいくつかの情報を追加します。 –