QDateTime
QDateTime dateTime;
QString dateTime_str = dateTime.currentDateTime().toString("yyyy-MM-dd hh:mm:ss");
// 从字符串转换为毫秒(需完整的年月日时分秒)
datetime.fromString("2011-09-10 12:07:50:541", "yyyy-MM-dd hh:mm:ss:zzz").toMSecsSinceEpoch();
// 从字符串转换为秒(需完整的年月日时分秒)
datetime.fromString("2011-09-10 12:07:50:541", "yyyy-MM-dd hh:mm:ss:zzz").toTime_t();
// 从毫秒转换到年月日时分秒
datetime.fromMSecsSinceEpoch(1315193829218).toString("yyyy-MM-dd hh:mm:ss:zzz");
// 从秒转换到年月日时分秒(若有zzz,则为000)
datetime.fromTime_t(1315193829).toString("yyyy-MM-dd hh:mm:ss[:zzz]");
使用 QDateTime::toMSecsSinceEpoch 计算时间差;
使用 QDateTime::fromMSecsSinceEpoch 构造一个对象;
使用 QDateTime::toUTC 转换为 utc 时间,这样就成为一个1970.01.01 00:00:00 开始的时间
toString 输出
QDateTime::toMSecsSinceEpoch() const;// 将QDateTime转换成毫秒
QDateTime::toSecsSinceEpoch() const;// 将QDateTime转换成秒
QDateTime::fromMSecsSinceEpoch(qint64 msecs);// 将毫秒值转换成QDateTime
QDateTime::fromSecsSinceEpoch(qint64 msecs);// 将秒转换成QDateTime
起始时刻从 “1970-01-01 T00:00:00” 开始算起
//基础单位为秒
qint64 currentTime1 = QDateTime::currentSecsSinceEpoch();
//基础单位为豪秒
qint64 currentTime2 = QDateTime::currentMSecsSinceEpoch();
或通过下述方法获取时间大数
QDateTime date = QDateTime::currentDateTime();
//基础单位为秒
date.toSecsSinceEpoch();
//基础单位为豪秒
date.toMSecsSinceEpoch();
年月日转换时间戳
//获取2002年5月20日0点的时间戳
QDate date(2002, 5, 20);
QDateTime dateTime(date);
qDebug() << dateTime.toSecsSinceEpoch();
时间戳转换年月日
QDateTime dd;
//秒级
dd.setSecsSinceEpoch(1576066090);
//毫秒级
dd.setMSecsSinceEpoch(1576066090917);
qDebug() << dd.toString("yyyy-MM-dd hh:mm:ss")
//秒级别的
QDateTime dd = QDateTime::fromSecsSinceEpoch(1576066090);
qDebug() << dd.toString("yyyy-MM-dd hh:mm:ss");
//豪秒级别的
QDateTime dd = QDateTime::fromMSecsSinceEpoch(1576066090917);
qDebug() << dd.toString("yyyy-MM-dd hh:mm:ss");
获取系统时间
#include <QDateTime>
#include <QDebug>
...
QDateTime sysDateTime;
qDebug() <<sysDateTime.currentDateTime().toString("yyyy年MM月dd日 hh:mm:ss");
- 延时(4.7之前的版本不能使用)
#include <QApplication>
#include <QDateTime>
#include <QDebug>
...
qint64 startTime = QDateTime::currentMSecsSinceEpoch();
qDebug() << startTime;
while (1)
{
if (QDateTime::currentMSecsSinceEpoch() - startTime > interval) // interval为需要延时的时间(ms)
{
break;
}
QApplication::processEvents(); // 处理其他事件,避免程序出现假死
}
qDebug() << QDateTime::currentMSecsSinceEpoch();
实例1:计算2个操作的时间差
#include <QTime>
#include <QDebug>
...
QTime startTime = QTime::currentTime();
QTime endTime = QTime::currentTime();
qDebug() << startTime.msecsTo(endTime); // 结果为ms
实例2:计算2个操作的时间差
#include <QDateTime>
#include <QTimer>
#include <QDebug>
...
QDateTime m_time;
QTimer *m_timer;
...
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
m_time = QDateTime::currentDateTime();
m_timer = new QTimer(this);
connect(m_timer, &QTimer::timeout, this, &MainWindow::on_func);
m_timer->start(1000);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_func()
{
// spen "00:00:01"
// spen "00:00:01"
// spen "00:00:03"
// spen "00:00:03"
// spen "00:00:05"
// spen "00:00:06"
// spen "00:00:07"
qDebug() << "spen" <<
QDateTime::fromMSecsSinceEpoch(QDateTime::currentDateTime().toMSecsSinceEpoch() - m_time.toMSecsSinceEpoch()).toUTC().toString("hh:mm:ss");
}
实例3:QdateTime减法
QDataTime time1 = QDateTime(QDate(1970,1,1));
QDateTime time2 = QDateTime(QDate(2020,1,1));
//time1到time2的秒数
qint64 diffs = time1.secsTo(time2);
//time1到time2的天数
qint64 diffs = time1.daysTo(time2);
chartdirection图表库插件的Chart::chartTime函数 应该是从0到如今时间的秒数,所以要和QT获取的时间相减的话,要先减去1970,1,1 08:00:00的秒数
实例4:QT时间差计算的两种方法
QDateTime startTime= QDateTime::currentDateTime();
Sleep(5000);
QDateTime endTime= QDateTime::currentDateTime();
qint64 intervalTime = startTime.
secsTo
(endTime); //求时间差
qint64 intervalTimeMS = startTime.
msecsTo
(endTime);
qDebug() << intervalTime; //时间相差
秒数
qDebug() << intervalTimeMS; //时间相差
毫秒数
//第二种方法
qint64 intervalTime2 = endTime.toTime_t() - startTime.toTime_t();
QString interval2 = tr("%1").arg(intervalTime2);
qDebug() << interval2; //时间相差秒数
//将秒数转化为时分秒格式
int H = m_dTotalTime / (60*60);
int M = (m_dTotalTime- (H * 60 * 60)) / 60;
int S = (m_dTotalTime - (H * 60 * 60)) - M * 60;
QString hour = QString::number(H);
if (hour.length() == 1) hour = "0" + hour;
QString min = QString::number(M);
if (min.length() == 1) min = "0" + min;
QString sec = QString::number(S);
if (sec.length() == 1) sec = "0" + sec;
QString qTime = hour + ":" + min + ":" + sec;
ui.m_pRemainTimeLbl->setText(qTime);
格式化输出当前时刻
qDebug()<<"currentTime--"<<QTime::currentTime().toString(Qt::ISODate)
<<QDateTime::currentDateTime().toString(Qt::ISODate)
<<QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss:zzz");
输出为:
currentTime--
"16:03:27"
"2016-02-24T16:03:27"
"2016-02-24 16:03:27:607"
2 获得1970-01-01至今的秒数并将这个描述转成日期
int i=QDateTime::currentDateTime().toTime_t();
qDebug()<<"i--"<<i;
qDebug()<<QDateTime::fromTime_t(i).toString("yyyy-MM-dd hh:mm:ss.zzz");
输出为:
i-- 1458134574
"2016-03-16 21:22:54.000"
3 获得当前的时间转成字符串形式,并且将这个时间的字符串转成当时日期
QString s=QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss.zzz");
QDateTime dateTime=QDateTime::fromString(s,"yyyy-MM-dd hh:mm:ss.zzz");
qDebug()<<"time--"<<s;
qDebug()<<dateTime.toString("yyyy-MM-dd hh:mm:ss.zzz");
qDebug()<<dateTime.toString("yyyy-MM-dd hh:mm:ss ddd");
输出为:
time-- "2016-03-16 21:26:00.635"
"2016-03-16 21:26:00.635"
"2016-03-16 21:26:00 周五"
3 QDateTime加一定秒数
QDateTime提供了这些函数来提供向数据中增加年月日时分秒的操作。
QDateTime dateTime=QDateTime::currentDateTime();
QDateTime dateTime2=dateTime.addSecs(7000000000);
qDebug()<<dateTime.toString(Qt::ISODate)
<<dateTime2.toString(Qt::ISODate);
输出为:
Starting F:\exercise\build-untitled20-desktop4_8_5-Debug\debug\untitled20.exe...
"2016-03-21T22:12:44" "1965-11-02T21:42:52"
1、所有服务号都可以在功能->添加功能插件处看到申请模板消息功能的入口,但只有认证后的服务号才可以申请模板消息的使用权限并获得该权限;
2、需要选择公众账号服务所处的2个行业,每月可更改1次所选行业;
3、在所选择行业的模板库中选用已有的模板进行调用;
4、每个账号可以同时使用25个模板。
5、当前每个账号的模板消息的日调用上限为10万次,