网站制作后续维护,最新黑帽seo培训,广告设计专业出来做什么,wordpress免签约接口一、日期时间数据
1.QTime 用于存储和操作时间数据的类#xff0c;其中包括小时(h)、分钟(m)、秒(s)、毫秒(ms)。函数定义如下#xff1a;
//注#xff1a;秒(s)和毫秒(ms)有默认值0
QTime::QTime(int h, int m, int s 0, int ms 0) 若无须初始化时间数据#xff0c;可…一、日期时间数据
1.QTime 用于存储和操作时间数据的类其中包括小时(h)、分钟(m)、秒(s)、毫秒(ms)。函数定义如下
//注秒(s)和毫秒(ms)有默认值0
QTime::QTime(int h, int m, int s 0, int ms 0) 若无须初始化时间数据可以使用静态函数 QTime::currentTime() 来创建一个QTime对象并获取当前时间
QTime time QTime::currentTime(); 在通常情况下我们直接获取当前时间即可如需修改当前时间可直接使用setHMS方法。因此后文将不再介绍使用函数定义的方法操作时间数据。 在默认情况下QTime总是使用24小时制不区分AM/PM。那么我们想要用到12小时制时该怎么处理时间数据呢这里需要用到一个函数 toString() 来格式化时间后文有介绍。
QTime常用函数接口 int hour()返回当前小时数据int minute()返回当前分钟数据int second()返回当前秒数据int msec()返回当前毫秒数据bool setHMS(int h, int m, int s, int ms 0)设置时间int msecsSinceStartOfDay()返回从00:00:00开始的毫秒数QTime addSecs(int s) 返回当前±s秒后的时间 int secsTo(QTime t)返回当前时间与t相差的秒数
2.QDate 用于存储和操作日期数据的类其中包含年、月、日数据。同样也可使用 QDate::currentDate() 来获取当前日期。 当然说到日期其中一个避不开的话题就是判断闰年。这里Qt直接给了一个静态函数方便判断哪一年是否为闰年
bool QDate::isLeapYear(int year)
QDate常用函数接口 int year() 返回当前日期的年数据int month()返回当前日期的月数据int day()返回当前日期的日数据int dayOfWeek()返回星期几bool setDate(int year, int month, int day)设置日期bool getDate(int *year, int *month, int *day)获取日期QDate addDays(int ndays)返回当前日期再加几天的日期qint64 daysTo(QDate d)返回与日期d的间隔天数
3.QDateTime 表示日期数据和时间数据的类。可通过如下方式获取日期和时间
QDateTime dateTime QDateTime::currentDateTime();
QDate dateTime DT1.date(); //获取日期
QTime dateTime DT1.time(); //获取时间
QDateTime常用函数接口 qint64 toSecsSinceEpoch()返回与1970年1月1日相差的秒数void setSecsSinceEpoch(qint64 secs)设置与1970年1月1日相差的秒数为当前的日期数据QdateTime toUTC()将当前时间转换为UTC数据 注UTC协调世界时Coordinated Universal Time是世界上时间的标准它不受时区影响并且基于原子钟的精确计时。UTC时间是一种时间标准用于全球的时钟和时间信号。 4.格式化日期时间数据 QTime、QDate、QDateTime都有格式化数据方法 toString() 和 fromString()。
a.toString() 将当前的日期时间数据转换为字符串。函数原型定义如下
QString QDateTime::toString(const QString format) format为转化后的格式Qt提供了一些预定义的格式可以直接使用。常用的为Qt::TextDate、Qt::ISODate、Qt::SystemLocaleShortDateQt6已被移除等。当然也可以使用一些自定义格式例如 yyyy四位数的年份MM两位数的月份01-12dd两位数的日期01-31hh两位数的小时00-23mm两位数的分钟00-59ss两位数的秒00-59zzz三位数的毫秒000-999AP或A使用AM/PM表示即从24小时制转化为12小时制 注在上面的格式中如果只写一位如‘d’则表示不补零显示1-31而非01-31。 举例
QDateTime dateTime QDateTime::currentDateTime();
qDebug() TextDate format: dateTime.toString(Qt::TextDate);
qDebug() ISODate format: dateTime.toString(Qt::ISODate);
qDebug() Custom format: dateTime.toString(yyyy-MM-dd hh:mm:ss.zzz AP);其输出结果为 b.fromString() 将字符串转化为相应类的对象。其函数原型如下
QDateTime QDateTime::fromString(const QString string, const QString format) 举个例子
QString dateTimeString 2024-07-02 14:30:45.123;
QDateTime dateTime1 QDateTime::fromString(dateTimeString, Qt::ISODate);
QDateTime dateTime2 QDateTime::fromString(dateTimeString, yyyy-MM-dd hh:mm:ss.zzz);
qDebug() DateTime1: dateTime1.toString();
qDebug() DateTime2: dateTime2.toString();输出结果为 5.界面组件 具体在创建界面时可拖动如图所示组件实现 二、定时器
1.QTimer QTimer的父类为QObject支持Qt的元对象系统。因此虽然它不是一个界面组件类但是它也有属性、信号timeout()和槽start()、stop()、自定义等。其主要属性如下
属性类型功能intervalint定时周期单位mssingleShotbooltrue表示单次定时timerTypeQt::TimerType精度类型。分为精确、粗糙、非常粗糙activeboolture表示定时器正在运行
a.timeout()信号 当定时器通过 start() 启动后每当定时溢出一次定时周期到了QTimer就会发射一个 timeout() 信号。如果是连续定时QTimer就会发射多次 timeout() 信号。举个例子
Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui-setupUi(this);QTimer *m_timer new QTimer(this); //创建定时器需要动态分配内存m_timer-stop(); //先停止定时器m_timer-setTimerType(Qt::CoarseTimer); //设置定时器精度等级:粗糙,误差不超过整个周期的5%m_timer-setInterval(3000); //设置定时器的周期为3sm_timer-setSingleShot(true); //设置单次定时connect(m_timer,SIGNAL(timeout()),this,SLOT(do_timer_timeout())); //关联定时器的信号与槽
}//与定时器的timeout()信号关联的槽函数
void Widget::do_timer_timeout()
{QApplication::beep(); //定时溢出时系统的蜂鸣器发声
}//“开始”按钮来启动定时器
void Widget::on_btnStart_clicked()
{m_timer-start(); //启动定时器m_timer为QTimer类
} 那么当点击开始按钮后在3s后就会听到系统的蜂鸣声。
b.静态函数singleShot() 这个函数用来创建和启动单次定时器并且将定时器的timeout()信号与指定槽函数关联。也就是说如果只是定时一次那么就无须繁琐的设置也无须启动随调随用。函数定义如下
void QTimer::singleShot(int msec, Qt::TimerType timerType, const QObject *reveiver, const char *member)
那么上面的例子就可以这样改写
Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui-setupUi(this);
}//与定时器的timeout()信号关联的槽函数
void Widget::do_timer_timeout()
{QApplication::beep(); //定时溢出时系统的蜂鸣器发声
}//动态创建单次定时器
void Widget::on_btnOneShot_clicked()
{QTimer::singleShot(3000,Qt::CoarseTimer,this,Widget::do_timer_timeout);
}
2.QElapsedTimer 这个类用于快速计算两个事件的间隔时间。与QTimer不同的是它没有父类不支持Qt的元对象系统所以只有一些简单的接口函数。使用起来也比较简单举个例子即可快速了解
Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{QElapsedTimer m_counter; // 创建计时器m_counter.start(); //启动计时器注意这里没有stop()方法
}//停止计时
void Widget::on_btnStop_clicked()
{int tmMsecm_counter.elapsed(); //毫秒数int ms tmMsec % 1000; //余数毫秒int sectmMsec/1000; //整秒QString strQString(流逝的时间%1秒%2毫秒).arg(sec).arg(ms,3,10,QChar(0));qDebug() Elapsed time: str;
} 点击停止按钮后可看到输出框的结果为 以上就是关于Qt中关于时间日期数据的一些总结。虽查阅大量资料可能仍有部分错误望读者不吝赐教。