2012-03-21 8 views

答えて

1

を試してみてください、あなたが何らかの形で実行時にそれを見つける必要がある、またはあなたのソースコードのためですか? 2番目のケースの場合はthis listを使用できます。

+0

私のソースコードは必要ですが、ユーザーがタイムゾーンを選択した場合、私のアプリはその標準で時間を表示する必要があります。どうやってやるの ? – abhishek

+0

これを達成するには、おそらくいずれかの解決策が可能です。まれに、タイムゾーンが変更された場合、それらが使用している外部リソースに反映されることを前提として、ソースコードのタイムゾーンをハードコーディングする方が簡単なアプローチかもしれませんが、システムから取得することはメンテナンスを必要としないという利点があります。しかし、これは非常にまれな出来事である方法を見て、過度のように思えるかもしれません。 – teukkam

5

ICU Libraryは移植性があり、Qtアプリケーションで使用できます。 (これにはC/C++ APIがあります)。多くの他の機能の中で、システムによって知られているタイムゾーンを列挙できるTimeZoneクラスがあります。

あなたが必要とするすべては、単純なリストがある場合、それはやり過ぎかもしれませんが、あなたはこれらのタイムゾーンを使用し、他のメタデータ(ロケールなど)と対話することが予想される場合、これは次のようになります良い解決策。

+0

私は、特定のリンクからライブラリを入手する場所を知っていません。シンビアンプロジェクトにこれらのライブラリを直接追加する方法はありますか? – abhishek

+0

ダウンロードページ:http://site.icu-project.org/download。このページには、バイナリとソースのダウンロードへのリンクと、Subversionリポジトリのアドレスが含まれています。私はSymbian環境での経験がないので、私はどんな詳細も提供できません。 ICUライブラリは通常のC/C++ライブラリです。ヘッダーをインクルードし、ライブラリへのパスをリンカに追加します。 Symbian固有のヘルプの新しい質問を作成することができます。 –

1

hereを記述したqt5.2の新しいQTimeZoneクラスを使用した別の例があります。

彼らはすべての既知のタイムゾーンに夏時間などの特別な設定を加えたカスタムウィジェットを作成します。

基本的なコードがある投稿:

#include <QDebug> 
#include <QByteArray> 
#include <QDateTime> 
#include <QList> 
#include <QTimeZone> 

#include "widget.h" 
#include "ui_widget.h" 

Widget::Widget(QWidget *parent) : 
    QWidget(parent), 
    ui(new Ui::Widget) 
{ 
    ui->setupUi(this); 

    // Fill in combo box. 
    QList<QByteArray> ids = QTimeZone::availableTimeZoneIds(); 
    foreach (QByteArray id, ids) { 
     ui->timeZoneComboBox->addItem(id); 
    } 

    // Connect combo box to slot to update fields. 
    connect(ui->timeZoneComboBox, SIGNAL(currentIndexChanged(int)), 
      SLOT(UpdateFields())); 

    // Update fields for initial value. 
    UpdateFields(); 
} 

void Widget::UpdateFields() { 

    QByteArray id = ui->timeZoneComboBox->currentText().toLatin1(); 
    QTimeZone zone = QTimeZone(id); 

    // Fill in fields for current time zone. 
    if (zone.isValid()) { 
     ui->descriptionLabel->setText(tr("<b>Description:</b> ") + id); 
     ui->countryLabel->setText(tr("<b>Country:</b> ") +  
      QLocale::countryToString(zone.country())); 
     ui->hasDaylightTimeCheckBox->setChecked(zone.hasDaylightTime()); 
     ui->isDaylightTimeCheckBox->setChecked(
      zone.isDaylightTime(QDateTime::currentDateTime())); 
     ui->hasTransitionsCheckBox->setChecked(zone.hasTransitions()); 
     QDateTime zoneTime = QDateTime(
      QDate::currentDate(), QTime::currentTime(), zone).toLocalTime(); 
     ui->dateEdit->setDate(zoneTime.date()); 
     ui->timeEdit->setTime(zoneTime.time()); 

     QTimeZone::OffsetData offset = zone.nextTransition(
      QDateTime::currentDateTime()); 
     if (offset.atUtc != QDateTime()) { 
      ui->nextTransitionLabel->setEnabled(true); 
      ui->nextTransitionLabel->setText(
      tr("<b>Next transition:</b> %1").arg(offset.atUtc.toString())); 
     } else { 
      ui->nextTransitionLabel->setEnabled(false); 
      ui->nextTransitionLabel->setText(
       tr("<b>Next transition:</b> none")); 
     } 
    } 
} 
関連する問題