qdatetime
时间: 2025-05-20 15:48:04 浏览: 14
### QDateTime 的用法详解
#### 当前日期时间获取并转换为字符串
通过 `QDateTime` 类可以轻松获取当前系统的日期和时间,并将其格式化为指定的字符串形式。以下是实现这一功能的代码示例:
```cpp
#include <QDateTime>
#include <QString>
QDateTime dateTime;
QString str1 = dateTime.currentDateTime().toString("yyyy-MM-dd hh:mm:ss");
// 输出类似于 "2023-10-05 14:30:00"
```
此操作利用了 `currentDateTime()` 方法来获取当前的时间戳,并通过 `toString()` 将其转化为特定格式的字符串[^1]。
---
#### 字符串转毫秒数或秒数
如果需要将一个表示具体时刻的字符串(如 `"2011-09-10 12:07:50:541"`)解析成对应的毫秒数或者秒数,可以通过如下方式完成:
```cpp
qint64 msecs = QDateTime::fromString("2011-09-10 12:07:50:541", "yyyy-MM-dd hh:mm:ss:zzz").toMSecsSinceEpoch();
qint64 secs = QDateTime::fromString("2011-09-10 12:07:50:541", "yyyy-MM-dd hh:mm:ss:zzz").toSecsSinceEpoch();
```
这里分别调用了 `toMSecsSinceEpoch()` 和 `toSecsSinceEpoch()` 来计算自 Unix 时间起点以来所经历的毫秒数与秒数[^1]。
---
#### 毫秒/秒数转回日期时间字符串
当已知某个事件发生的具体毫秒数或秒数值时,可逆向构建出相应的日期时间对象及其字符串表现形式:
```cpp
QString str2 = QDateTime::fromMSecsSinceEpoch(1315193829218).toString("yyyy-MM-dd hh:mm:ss:zzz");
QString str3 = QDateTime::fromSecsSinceEpoch(1315193829).toString("yyyy-MM-dd hh:mm:ss[:zzz]");
```
注意,在最后一种情况下由于原始数据精度仅为整秒级,因此最终输出中的毫秒部分会被固定设为零。
---
### 综合应用实例
假设我们需要记录程序运行期间的关键时间节点以及它们之间的差值,下面给出了一段示范性的逻辑片段:
```cpp
#include <QDebug>
#include <QDateTime>
void logTimestamp(const QString& message){
static QDateTime startTime = QDateTime::currentDateTime(); // 静态变量存储起始点
qDebug() << message << ":" << startTime.toString("hh:mm:ss.zzz");
QDateTime currentTime = QDateTime::currentDateTime();
qint64 elapsedMsecs = startTime.msecsTo(currentTime);
qDebug() << "Elapsed Time:" << elapsedMsecs << "ms";
}
int main(){
logTimestamp("Start Processing");
// Simulate some work...
QThread::sleep(2);
logTimestamp("End Processing");
}
```
在这个例子中定义了一个名为 `logTimestamp` 的辅助函数用于打印带有时间标记的日志信息;同时借助于成员方法 `msecsTo` 计算两次调用间实际耗时长短[^1]。
---
阅读全文
相关推荐


















