2016-03-31 11 views
0

私はちょうどタイムゾーンを変更しました。データベース (私は現在タイムゾーンGMT + 2にいます)に問題があります。Qtとpostgresqlのタイムゾーン

私は何かが始まると、私はこのクエリを使用するときにチェックする必要があります。

SELECT *,extract(epoch from start at time zone 'cet') as start_, extract(epoch from stop at time zone 'cet') as stop_ from czas; 

と私のstart_/stop_は1時間古いですので、それは、間違っている:すなわち16の代わりに、17と「CET」する必要があることがあるべき「cest」に置き換えられました。

私は現在、短いゾーン名(cet/cest)を表示する必要がありQTimeZoneクラスを見つけましたが、私はこのようにそれを使用する場合:

QDateTime now = QDateTime::currentDateTime(); 
QTimeZone zone_; 
qDebug()<<"ZONE: "<<zone_.displayName(now,QTimeZone::ShortName); 

私は空の文字列を取得します。

なぜ誰も考えがありますか?

答えて

1

QTがあなたが期待していることをしていない理由について私は答えられません。

Perhapse正しいタイムゾーンを使用することの問題である、あなたが始めた問題の解決に役立つでしょうか?このため、PostgreSQLは、オフセットされた時間数ではなく、国に設定されたいくつかのタイムゾーン名を提供します。たとえば、'Europe/London'は、冬のタイムスタンプの場合は'GMT'、夏のタイムスタンプの場合は'BST'と指定します。

これらのリストは、9.xのマニュアルで削除されましたが、8.1のマニュアルにリストがここで見つけることができます:お使いのシステムのために

http://www.postgresql.org/docs/8.1/static/datetime-keywords.html

はの完全なリストを取得するには、次の使用しますタイムゾーン名:

select * from pg_timezone_names; 

私は自分のアプリケーションに最も適しているこれらのどの知らないが、例えば、あなたのコードに変更することができます

SELECT *,extract(epoch from start time zone 'Europe/Paris') as start_, extract(epoch from stop at time zone 'Europe/Paris') as stop_ from czas; 
+0

それが動作します!簡単に変更することができます 'ヨーロッパ/パリ'作品にcet! – blackmoon

関連する問題