有没有人知道如何将时区包含在QDateTime的ISO字符串表示中?
我应该可以使用以下内容:
qDebug() << QDateTime::currentDateTime().toString(Qt::ISODate);
Run Code Online (Sandbox Code Playgroud)
但这总是以UTC格式出现:
2014-02-24T01:29:00Z
Run Code Online (Sandbox Code Playgroud)
目前,我正在解决这个问题的方法是通过显式设置偏移量来强制TimeSpec为Qt :: offsetFromUtc,这是我最初从QDateTime获得的.
QDateTime now = QDateTime::currentDateTime();
int offset = now.offsetFromUtc();
now.setOffsetFromUtc(offset);
qDebug() << now.toString(Qt::ISODate);
Run Code Online (Sandbox Code Playgroud)
这给出了最初的预期:
2014-02-24T01:29:00+02:00
Run Code Online (Sandbox Code Playgroud)
有没有人知道如何以更清洁的方式做到这一点,还是必须将其记录为错误?
编辑:我正在使用Qt5.2.1
更新:
以下小程序显示了我的意思:
#include <QtCore/QDateTime>
#include <QtCore/QDebug>
int main(int argc, int argv){
qDebug() << QDateTime::currentDateTime().toString(Qt::ISODate);
qDebug() << QDateTime::currentDateTime().toTimeSpec(Qt::OffsetFromUTC).toString(Qt::ISODate);
QDateTime now = QDateTime::currentDateTime();
int offset = now.offsetFromUtc();
now.setOffsetFromUtc(offset);
qDebug() << now.toString(Qt::ISODate);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
生成以下输出:
"2014-02-24T10:20:49"
"2014-02-24T08:20:49Z"
"2014-02-24T10:20:49+02:00"
Run Code Online (Sandbox Code Playgroud)
最后一行是预期的那一行.请注意,第二次转换为UTC,这不是想要的.
我有一个QDateEdit在我的GUI中,我将其转换QDate为QString并将其添加到我的数据库.该QString日期被保存在这种格式的数据库:20/12/2015.
如果用户想要编辑日期,那么我需要QDateEdit再次在GUI 上的字段上显示日期.因此,我需要获取数据库,带回日期(QString格式为)并将其QDate再次转换回来,以便将其放在QDateEditGUI 上的字段上.
但是,我无法将该QString格式(即:2015年12月20日)转换为QDate使用以下内容:
QString date_string_on_db = "20/12/2015";
QDate Date;
Date.fromString(date_string_on_db,"dd/MM/YYYY");
Run Code Online (Sandbox Code Playgroud)
将Date总是返回invalid.
我该怎么办 ?
我有以下情况:
QDate fixDate = QDate::fromString(QString("270912"), "ddMMyy");
Run Code Online (Sandbox Code Playgroud)
返回的那一年是1912.我不明白为什么以及如何得到正确的一年.
提前致谢
我有一个关于 PyQt4 的问题。我有一个 QDate 类型的日期,我想简单地将其转换为字符串格式而不是 QDate 格式。例如,如果日期是 09/16/2013,如果可能的话,我想将其更改为字符串形式 2013 年 9 月 16 日。
我玩弄了 toString 但我认为它只适用于 C++(除非我弄错了)。
该函数QDate::toString(const QString &format)允许显示月份名称MMM(例如“Jan”到“Dec”)或MMMM(例如“January”到“December”)。
但是这个函数使用来自QLocale::system()(源代码)的系统区域设置。
QDate对于特定的 QLocale显示带有月份名称的最简单方法是什么?
我正在为使用Qt框架的考试做一些准备,我想知道如何以基本方式使用QInputDialog和QMessageBox(我的考试是手写编码)
Qt API在使用方面真的很难理解它对于我的项目来说很好,因为我可以以一种非常"hacky"的方式完成我想要的东西,我的关于这个主题的设置书很糟糕......
让我谈谈在这种情况下使用QInputDialog和QMessageBox的简洁方法:
#include <QApplication>
#include <QInputDialog>
#include <QDate>
#include <QMessageBox>
int computeAge(QDate id) {
int years = QDate::currentDate().year() - id.year();
int days = QDate::currentDate().daysTo(QDate
(QDate::currentDate().year(), id.month(), id.day()));
if(days > 0)
years--;
return years
}
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
/* I want my QInputDialog and MessageBox in here somewhere */
return a.exec();
}
Run Code Online (Sandbox Code Playgroud)
对于我的QInputDialog,我希望用户给出他们的出生日期(不要担心输入验证)我想使用QMessageBox来显示用户的年龄
我只是不明白在基本情况下需要进入QInputDialog和QMessageBox的参数是什么,因为那里似乎没有任何示例.
我怎么做到这一点?
我想将值从QDateEdit存储到String。我使用了以下代码:
QString str = ui->dateeditobject->date().toString("dd/mm/yyyy")
但是问题是,如您在图中看到的那样,月份值没有被存储。
我要去哪里错了?