回答
你需要在運行時以某種方式找到它,或者你的源代碼?如果是第二種情況,則可以使用this list。
是嘗試這個例子
http://www.developer.nokia.com/Community/Wiki/How_to_get_list_of_Time_Zones_in_Qt_Maemo_application
注意這不是一個Qt的原生解決方案,所以它不能移植到所有平臺。 – teukkam 2012-03-21 12:25:04
Moi,我知道:),但應該給「abhishek」正確的方法來接近 – Programmer 2012-03-21 12:28:18
ICU Library是便攜式的,可用於Qt應用程序。 (它有一個C/C++ API。)在其他許多功能中,有一個TimeZone
類,它可以枚舉系統已知的時區。
這可能是矯枉過正,如果你需要的是一個簡單的列表,但如果你希望使用這些時區,並與其他元數據(區域設置等)進行交互,這將是很好的解決方案。
我不知道從哪裏得到給定鏈接的庫,有什麼方法可以直接將這些庫添加到我的symbain項目中? – abhishek 2012-03-28 08:24:03
下載頁面是:http://site.icu-project.org/download。該頁面包含二進制和源代碼下載鏈接以及Subversion存儲庫的地址。我對Symbian環境沒有經驗,所以我恐怕不能提供任何細節; ICU庫是一個正常的C/C++庫 - 包含頭文件,將鏈接庫的路徑添加到庫中。您可能想爲Symbian特定的幫助創建一個新問題。 – 2012-03-28 12:30:31
在qt5.2中描述的here中有另一個使用新QTimeZone類的例子。
他們創建了一個自定義Widget,它列出了所有已知的時區以及他們的特殊設置,如夏令時等。
基本代碼貼有:
#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"));
}
}
}
- 1. QT - 獲取所有QPushButton的列表
- 2. 如何獲得javascript中所有時區的列表
- 3. 如何獲得Java 8中所有時區ID的列表
- 4. 獲取有效時區列表中的有效時區
- 5. 獲取所有Emacs緩衝區列表
- 6. 如何獲取所有時區列表作爲Magento 2中的數組
- 7. 獲取所有時區
- 8. Windows Phone 8獲取所有時區的列表
- 9. 如何在Python中獲取列表的所有排序列表
- 10. 如何獲取具有標識列的所有表的列表
- 11. 如何獲取所有賣家列表?
- 12. 在Python中,如何獲取Mac OS X中所有分區的列表?
- 13. 如何獲取Salesforce中表中所有字段的列表?
- 14. 如何從NodaTime的偏移量中獲取所有IANA時區?
- 15. 如何獲取Android中的所有列?
- 16. 如何獲得Mathematica中列表的所有分區?
- 17. 獲取Qt中的所有窗口
- 18. 如何從關係表中獲取所有父母的列表
- 19. 獲取散列表中的所有值
- 20. 獲取Android中所有Windows的列表
- 21. 獲取所有選中值的列表
- 22. 獲取列表中的所有成員
- 23. 如何獲取flex3中列表中的所有子itemvalues
- 24. 如何獲取列表中的所有最高整數Python中
- 25. 如何在pyside/pyqt/qt中獲取QWidget的所有子組件?
- 26. 如何在Qt中從QListWidget獲取所有項目的文本?
- 27. 獲取Qt中的USB磁盤列表
- 28. 獲取所有子序列的列表
- 29. Qt如何獲取分區ID?
- 30. 如何從Java中的sqlQuery獲取表列的所有值?
我需要它爲我的源代碼,但如果用戶選擇時區,我的應用程序應該在該標準中顯示時間。我怎樣才能做到這一點 ? – abhishek 2012-03-22 12:38:46
要實現這一點,可能要麼解決方案是可能的。在源代碼中對時區進行硬編碼可能是一種更簡單的方法,但從系統中獲取它們具有不需要維護的優點,假設極少數情況下時區發生變化,它們將反映在您正在使用的外部資源中。不過,看起來這應該是一件極其罕見的事情。 – teukkam 2012-03-22 12:46:55