QT QDateTime、QTime 与 QString 的相互转换

在开发过程中,经常会遇到获取日期时间,或者把日期时间转为字符串,本文对此(QDateTime、QTime 与 QString 之间的转换)稍作了一下整理:

  • 当前时间转字符串
//当前时间
QString result = "";
result = QTime::currentTime().toString(Qt::ISODate);
qDebug() << result; //"10:51:37"
result = QDateTime::currentDateTime().toString(Qt::ISODate);
qDebug() << result; //"2022-01-21T10:51:37"
  • 当前秒数转字符串
//当前秒数
result = QString::number(QDateTime::currentDateTime().toTime_t());
qDebug() << result; //"1642733497"
  • 当前时间转指定格式字符串
//当前时间转指定格式字符串
result = QTime::currentTime().toString("hh:mm:ss");
qDebug() << result; //"10:51:37"
result = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss.zzz");
qDebug() << result; //"2022-01-21 10:51:37.068"
  • 时间字符串转时间
//时间字符串转时间
result = QDateTime::currentDateTime().toString(Qt::ISODate);
QDateTime dateTime = QDateTime::fromString(result, Qt::ISODate);
Qt框架中,你可以使用`QDateTime::fromString()`函数将`QString`类型的字符串转换成`QDateTime`对象。这里是一个详细的示例代码: ```cpp #include <QObject> #include <QDateTime> #include <QString> class MyClass : public QObject { public: // 定义一个静态方法,方便转换 static QDateTime QStringToQDateTime(const QString& strDate) { QDate date; QTime time; // 解析日期字符串 if (date.fromString(strDate.left(10), "yyyy-日" if (time.fromString(strDate.mid(11), "HH:mm:ss")) { // 假设时间格式为"小时:分钟:秒" return QDateTime(date, time); } } // 如果解析失败,返回默认值或者抛出异常(根据实际需求) qDebug() << "Failed to parse QDateTime from string: " << strDate; return QDateTime(); } // 示例如何使用该方法 void processDateString(const QString& inputDateStr) { QDateTime dateTime = QStringToQDateTime(inputDateStr); if (!dateTime.isValid()) { qWarning("Invalid datetime string"); } else { // 使用解析后的QDateTime对象 qDebug() << "Converted QDateTime: " << dateTime.toString("yyyy-MM-d HH:mm:ss"); } } }; int main(int argc, char *argv[]) { // 初始化Qt应用程序... QApplication app(argc, argv); // 创建MyClass实例并调用转换方法 MyClass obj; obj.processDateString("2023-04-01 15:30:00"); return app.exec(); } ``` 在这个例子中,我们假设输入的日期字符串格式固定为"年-月-日 时:分:秒"。你需要根据实际接收到的字符串调整日期和时间部分的正则表达式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hellokandy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值