QDataTime
是Qt框架中用于处理日期和时间的类。它提供了操作和格式化日期、时间和日期时间组合的功能。QDataTime可以用于存储和检索日期和时间、比较日期和时间、对日期和时间执行算术操作以及将日期和时间转换为不同的格式。(注:QDateTime不包括闰秒。)
#include "mainwindow.h"
#include
#include
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QDateTime currentDateAndTime = QDateTime::currentDateTime(); // 获取当前日期和时间
qDebug("Current date and time: %s", currentDateAndTime.toString().toUtf8().constData());
return a.exec();
}
currentDateAndTime.toString("yyyy.MM.dd hh:mm:ss")
更多格式可参考Qt Creator中的帮助:
QString QDateTime::toString(QStringView format) const
QDateTime Data(QDate(2024, 1, 2), QTime(8, 30, 0));
Data = Data.toUTC();
qDebug() << Data;
Data = Data.toLocalTime();
qDebug() << Data;
QDateTime Data(QDate(2024, 1, 2), QTime(8, 30, 0));
qDebug() << Data;
Data.setDate(QDate(2024, 1, 1));
qDebug() << Data;
使用时间戳的优势:
- 统一性:时间戳是一个数字,在不同的平台和系统中都可以统一表示时间。而时间的表示方式在不同的地区和文化中可能有所不同,例如日期顺序、时间格式等。
- 精确度:时间戳通常以毫秒为单位,可以提供更高的精确度。而时间的表示可能只能精确到秒或分钟级别。
- 方便计算:使用时间戳进行时间计算更加方便。可以直接进行加减运算,获取时间差,而不需要考虑不同的时间单位和格式化问题。
- 时区处理:时间戳通常是以UTC(协调世界时)表示,可以消除时区的影响。在不同的时区使用时间表示时,可能需要进行时区转换,而时间戳则可以直接用于全球范围内的时间计算。
QDateTime::currentMSecsSinceEpoch()
- 返回自1970-01-01T00:00:00以来的毫秒数。QDateTime::currentSecsSinceEpoch()
- 返回自时间1970-01-01T00:00:00以来的秒数。几种获取系统时间戳方式的对比:https://www.jianshu.com/p/c9b775d831fb
#include "mainwindow.h"
#include
#include
#include
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QDateTime currentDateAndTime = QDateTime::currentDateTime(); // 获取当前日期和时间
qDebug()<<currentDateAndTime.toSecsSinceEpoch();
qDebug()<<QDateTime::fromSecsSinceEpoch(currentDateAndTime.toSecsSinceEpoch());
return a.exec();
}
QDateTime startDate(QDate(2012, 7, 6), QTime(8, 30, 0));
QDateTime endDate(QDate(2012, 7, 7), QTime(16, 30, 0));
qDebug() << "Days from startDate to endDate: " << startDate.daysTo(endDate);
startDate = QDateTime(QDate(2012, 7, 6), QTime(23, 55, 0));
endDate = QDateTime(QDate(2012, 7, 7), QTime(0, 5, 0));
qDebug() << "Days from startDate to endDate: " << startDate.daysTo(endDate);
qSwap(startDate, endDate); // Make endDate before startDate.
qDebug() << "Days from startDate to endDate: " << startDate.daysTo(endDate);
QDateTime Data(QDate(2024, 1, 2), QTime(8, 30, 0));
qDebug() << Data.addYears(1);
qDebug() << Data.addMonths(1);
qDebug() << Data.addDays(1);
qDebug() << Data.addSecs(1);
QDateTime D1(QDate(2024, 1, 2), QTime(8, 30, 0));
QDateTime D2(QDate(2024, 1, 1), QTime(16, 30, 0));
qDebug() << "D1 大于 D2:" << (D1 < D2);
时间戳
)QDataStream &operator<<(QDataStream &out, const QDateTime &dateTime)
QDataStream &operator>>(QDataStream &in, QDateTime &dateTime)