Есть ли способ получить списки всех временных зон IST, ET и т. Д.Как получить список всех часовых поясов в Qt?
Я должен использовать их в своем приложении.
Есть ли способ получить списки всех временных зон IST, ET и т. Д.Как получить список всех часовых поясов в Qt?
Я должен использовать их в своем приложении.
вам нужно каким-то образом найти его во время выполнения, или для исходного кода ли? Если во втором случае вы можете использовать this list.
Да попробовать этот пример
http://www.developer.nokia.com/Community/Wiki/How_to_get_list_of_Time_Zones_in_Qt_Maemo_application
Примечание это не является родным решением Qt, так что это не является переносимым для всех платформ. – teukkam
Moi, я знаю это :), но должен дать «abhishek» правильный способ приблизиться – Programmer
ICU Library переносимый и может использоваться в приложении Qt. (У него есть C/C++ API.) Среди его многих других функций есть класс TimeZone
, который может перечислять часовые пояса, известные системе.
Это может быть излишним, если все, что вам нужно, это просто список, но если вы планируете использовать эти временные зоны и взаимодействовать с другими метаданными (локалей и т.д.), это было бы хорошее решение.
Я не знаю, откуда можно получить библиотеки из данной ссылки. Есть ли способ напрямую добавить эти библиотеки в мой проект с символикой? – abhishek
Страница загрузки: http://site.icu-project.org/download. Эта страница содержит ссылки на двоичные и исходные загрузки, а также адрес репозитория Subversion. У меня нет опыта работы с средой Symbian, поэтому я боюсь, что я не могу предложить никаких подробностей; библиотека ICU - обычная библиотека C/C++ - включает заголовки, добавляет путь к библиотекам в ваш компоновщик. Возможно, вам понадобится создать новый вопрос для справки по Symbian. –
Существует еще один пример использования нового класса QTimeZone в qt5.2, описанном here.
Они создают пользовательский виджет, в котором перечислены все известные часовые пояса, а также их специальные настройки, такие как летнее время и т. Д.
Основной код размещен там:
#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"));
}
}
}
Мне нужен он для моего исходного кода, но если пользователь выбирает часовой пояс, мое приложение должно показывать время в этом стандарте. Как мне это сделать ? – abhishek
Чтобы достичь этого, возможно, любое решение возможно. Жесткое кодирование часовых поясов в исходном коде может быть более простым, но получение их из системы имеет то преимущество, что не нуждается в обслуживании, предполагая, что в редком случае, когда часы будут изменены, они будут отражены во внешнем ресурсе, который вы используете. Это может показаться излишним, хотя, видя, как это должно быть чрезвычайно редкое событие. – teukkam