为什么要建设营销型网站,西安网站制作工作室,上海网站建设021360,北京产品网站建设Qt 基础之QDataTime 引言一、获取(设定)日期和时间二、时间戳三、时间计算 (重载运算符) 引言 QDataTime是Qt框架中用于处理日期和时间的类。它提供了操作和格式化日期、时间和日期时间组合的功能。QDataTime可以用于存储和检索日期和时间、比较日期和时间、对日期和时间执行算… Qt 基础之QDataTime 引言一、获取(设定)日期和时间二、时间戳三、时间计算 (重载运算符) 引言 QDataTime是Qt框架中用于处理日期和时间的类。它提供了操作和格式化日期、时间和日期时间组合的功能。QDataTime可以用于存储和检索日期和时间、比较日期和时间、对日期和时间执行算术操作以及将日期和时间转换为不同的格式。(注QDateTime不包括闰秒。) 一、获取(设定)日期和时间 获取当前日期和时间
#include mainwindow.h
#include QApplication
#include QDateTimeint 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 获取UTC时间QDateTime::currentDateTimeUtc(); UTC与本地时间的转换toUTC() - toLocalTime() QDateTime Data(QDate(2024, 1, 2), QTime(8, 30, 0));Data Data.toUTC();qDebug() Data;Data Data.toLocalTime();qDebug() Data;使用其构造函数或set函数设定时间QDateTime Data(QDate(2024, 1, 2), QTime(8, 30, 0)); 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 时间戳和时间的转换 (例子如下所示) QDateTime::fromMSecsSinceEpoch - toMSecsSinceEpoch() QDateTime::fromSecsSinceEpoch - toSecsSinceEpoch()
#include mainwindow.h
#include QApplication
#include QDateTime
#include QDebugint 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::daysTo(const QDateTime other) const - 返回从该日期时间到另一日期时间的天数。天数是指从这个日期时间到另一个日期时间之间达到午夜的次数。这意味着从23:55到第二天0:05的10分钟差算作一天。如果其他日期时间早于此日期时间则返回的值为负数例子如下 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::addDays(qint64 ndays) const - 返回一个QDateTime对象该对象包含的日期时间比该对象的日期时间晚ndays天如果ndays为负数则早于ndays天。(还有 addMonths(), addYears(), addSecs()等) 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::operator! - 如果此日期时间与其他日期时间不同则返回true否则返回false。(还有等可以比较两个时间的大小) 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)