Qt:日期与时间戳互相转换Demo

这篇具有很好参考价值的文章主要介绍了Qt:日期与时间戳互相转换Demo。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、dialog.h

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>
#include <QLabel>
#include <QLineEdit>
#include <QRadioButton>
#include <QPushButton>

class Dialog : public QDialog
{
    Q_OBJECT    
public:
    Dialog(QWidget *parent = 0);
    ~Dialog();
    
private:
    enum ESinceEpochType {
        EN_Secs = 0,
        EN_MSecs,
    };
    
    void init();
    void initLayout();
    
private slots:
    void onConvertToSinceEpoch();
    void onConvertToDtime();
    
private:
    QLabel          *m_lblYear = nullptr;
    QLineEdit       *m_edtYear = nullptr;
    QLabel          *m_lblMonth = nullptr;
    QLineEdit       *m_edtMonth = nullptr;
    QLabel          *m_lblDay = nullptr;
    QLineEdit       *m_edtDay = nullptr;

    QLabel          *m_lblHour = nullptr;
    QLineEdit       *m_edtHour = nullptr;
    QLabel          *m_lblMinute = nullptr;
    QLineEdit       *m_edtMinute = nullptr;
    QLabel          *m_lblSecond = nullptr;
    QLineEdit       *m_edtSecond = nullptr;
    
    ESinceEpochType m_eSinceEpochType = EN_Secs;
    QRadioButton    *m_rbtnSecsSinceEpoch = nullptr;
    QRadioButton    *m_rbtnMSecsSinceEpoch = nullptr;
    
    QPushButton     *m_btnConvert = nullptr;
    QLabel          *m_lblTimestamp = nullptr;
    QLineEdit       *m_edtTimestamp = nullptr;
    
    QPushButton     *m_btnConvert2 = nullptr;
    QLabel          *m_lblDateTime = nullptr;
    QLineEdit       *m_edtDateTime = nullptr;
};

#endif // DIALOG_H

2、dialog.cpp

#include "dialog.h"
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QDateTime>

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{
    init();
    initLayout();
}

Dialog::~Dialog()
{
}

void Dialog::init()
{
    m_lblYear = new QLabel("年", this);
    m_edtYear = new QLineEdit("2022", this);
    m_lblMonth = new QLabel("月", this);
    m_edtMonth = new QLineEdit("12", this);
    m_lblDay = new QLabel("日", this);
    m_edtDay = new QLineEdit("28", this);
    
    m_lblHour = new QLabel("时", this);
    m_edtHour = new QLineEdit("14", this);
    m_lblMinute = new QLabel("分", this);
    m_edtMinute = new QLineEdit("43", this);
    m_lblSecond = new QLabel("秒", this);
    m_edtSecond = new QLineEdit("30", this);
    
    m_rbtnSecsSinceEpoch = new QRadioButton("时间戳(秒)", this);
    m_rbtnMSecsSinceEpoch = new QRadioButton("时间戳(毫秒)", this);
    
    m_btnConvert = new QPushButton("转换为时间戳", this);
    m_lblTimestamp = new QLabel("时间戳:", this);
    m_edtTimestamp = new QLineEdit(this);
    
    m_btnConvert2 = new QPushButton("转换为日期", this);
    m_lblDateTime = new QLabel("日期:", this);
    m_edtDateTime = new QLineEdit(this);
    
    m_edtYear->setFixedSize(100, 30);
    m_edtMonth->setFixedSize(100, 30);
    m_edtDay->setFixedSize(100, 30);
    m_edtHour->setFixedSize(100, 30);
    m_edtMinute->setFixedSize(100, 30);
    m_edtSecond->setFixedSize(100, 30);
    
    m_btnConvert->setFixedSize(100, 30);
    m_edtTimestamp->setFixedSize(200, 30);
    m_btnConvert2->setFixedSize(100, 30);
    m_edtDateTime->setFixedSize(200, 30);
    m_edtDateTime->setEnabled(false);
    
    m_rbtnSecsSinceEpoch->setChecked(true);
    m_rbtnMSecsSinceEpoch->setChecked(false);
    m_eSinceEpochType = EN_Secs;
    
    connect(m_rbtnSecsSinceEpoch, &QRadioButton::toggled, this, [this] {
        m_eSinceEpochType = EN_Secs;
        onConvertToSinceEpoch();
        onConvertToDtime();
    });
    
    connect(m_rbtnMSecsSinceEpoch, &QRadioButton::toggled, this, [this] {
        m_eSinceEpochType = EN_MSecs;
        onConvertToSinceEpoch();
        onConvertToDtime();
    });
    
    connect(m_btnConvert, &QPushButton::clicked, this, &Dialog::onConvertToSinceEpoch);
    
    connect(m_btnConvert2, &QPushButton::clicked, this, &Dialog::onConvertToDtime);
}

void Dialog::initLayout()
{
    QHBoxLayout *hLay1 = new QHBoxLayout();
    hLay1->setMargin(0);
    hLay1->setSpacing(16);
    hLay1->addWidget(m_edtYear);
    hLay1->addWidget(m_lblYear);
    hLay1->addWidget(m_edtMonth);
    hLay1->addWidget(m_lblMonth);
    hLay1->addWidget(m_edtDay);
    hLay1->addWidget(m_lblDay);
    
    QHBoxLayout *hLay2 = new QHBoxLayout();
    hLay2->setMargin(0);
    hLay2->setSpacing(16);
    hLay2->addWidget(m_edtHour);
    hLay2->addWidget(m_lblHour);
    hLay2->addWidget(m_edtMinute);
    hLay2->addWidget(m_lblMinute);
    hLay2->addWidget(m_edtSecond);
    hLay2->addWidget(m_lblSecond);
    
    QHBoxLayout *hLayRbtn = new QHBoxLayout();
    hLayRbtn->setMargin(0);
    hLayRbtn->setSpacing(20);
    hLayRbtn->addStretch(0);
    hLayRbtn->addWidget(m_rbtnSecsSinceEpoch);
    hLayRbtn->addWidget(m_rbtnMSecsSinceEpoch);
    hLayRbtn->addStretch(0);
    
    QHBoxLayout *hLay3 = new QHBoxLayout();
    hLay3->setMargin(0);
    hLay3->setSpacing(16);
    hLay3->addWidget(m_btnConvert);
    hLay3->addStretch();
    hLay3->addWidget(m_lblTimestamp);
    hLay3->addWidget(m_edtTimestamp);
    
    QHBoxLayout *hLay4 = new QHBoxLayout();
    hLay4->setMargin(0);
    hLay4->setSpacing(16);
    hLay4->addWidget(m_btnConvert2);
    hLay4->addStretch();
    hLay4->addWidget(m_lblDateTime);
    hLay4->addWidget(m_edtDateTime);
    
    QVBoxLayout *vLayMain = new QVBoxLayout(this);
    vLayMain->setMargin(60);
    vLayMain->setSpacing(20);
    vLayMain->addLayout(hLay1);
    vLayMain->addLayout(hLay2);
    vLayMain->addLayout(hLayRbtn);
    vLayMain->addLayout(hLay3);
    vLayMain->addLayout(hLay4);
    this->setLayout(vLayMain);
}

void Dialog::onConvertToSinceEpoch()
{
    QString strDtime = QString("%1-%2-%3 %4:%5:%6")
            .arg(m_edtYear->text(), m_edtMonth->text(), m_edtDay->text(), 
                 m_edtHour->text(), m_edtMinute->text(), m_edtSecond->text());
    QDateTime dt = QDateTime::fromString(strDtime, "yyyy-MM-dd hh:mm:ss");
    
    if (dt.isValid()) {
        qint64 timeStamp;
        if (EN_Secs == m_eSinceEpochType)
            timeStamp = dt.toSecsSinceEpoch();
        else if (EN_MSecs == m_eSinceEpochType)
            timeStamp = dt.toMSecsSinceEpoch();
        else
            timeStamp = 0;
        m_edtTimestamp->setText(QString::number(timeStamp));
    }
}

void Dialog::onConvertToDtime()
{
    QDateTime dt;
    if (EN_Secs == m_eSinceEpochType)
        dt = QDateTime::fromSecsSinceEpoch(m_edtTimestamp->text().toLongLong());
    else if (EN_MSecs == m_eSinceEpochType)
        dt = QDateTime::fromMSecsSinceEpoch(m_edtTimestamp->text().toLongLong());
    
    if (dt.isValid())
        m_edtDateTime->setText(dt.toString("yyyy-MM-dd hh:mm:ss"));
}

3、运行界面:

qt 时间戳,Qt,qt,开发语言,ui 文章来源地址https://www.toymoban.com/news/detail-632973.html

到了这里,关于Qt:日期与时间戳互相转换Demo的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Qt中的日期和时间

    目录 QDate 示例(打印年月日):  QTime 示例(显示时分秒): QDateTime 示例(显示当前日期和时间): 示例(分别取出 年 月 日 时 分 秒): QDate                  QDate是Qt库中的日期类,提供了一种方便的方式来处理日期。它主要用于处理日期和时间相关的操作,包

    2024年02月09日
    浏览(28)
  • 【QT】时间日期与定时器

    目录 1.时间日期相关的类 2.日期时间数据与字符串之间的转换 2.1 时间、日期编辑器属性设置 2.2 日期时间数据的获取与转换为字符串 2.3 字符串转换为日期时间 3.QCaIendarWidget日历组件 3.1基本属性 3.2 公共函数 3.3 信号 4.实例程序演示时间日期与定时器的使用 时间日期是经常

    2024年02月04日
    浏览(39)
  • QT 底部状态栏显示当前日期时间(每秒变化)

    效果如红框显示 首先需要引入三个头文件 其次在头文件定义两个私有变量 最后获取当前时间,设置显示模式,开启定时器 d:天,不补充0占位,1~31 dd:天,补充0占位,01~31 M:月,不补充0占位,1~12 MM:月,补充0占位,01~12 yy:年,两位显示,00~99 yyyy:年,四位显示,000

    2024年02月04日
    浏览(29)
  • LocalDateTime与String日期互相转换

    输出结果 输出结果 输出结果

    2024年02月12日
    浏览(27)
  • 【QT】如何实时显示当前时间在UI上

    2024年02月15日
    浏览(23)
  • Qt学习1:ui界面显示实时时间(自己学习用)

    Qt获取系统当前时间,ui界面显示实时时间和日期。 一、ui放入Qlabel 开关按钮是控制灯的,不用管。 1. 静态时间显示用虚拟text 二、.cpp添加代码 槽是 C++ 成员函数,可以被调用。 private slots:在这个区内声明的槽意味着只有类自己可以将信号与之相连接。(一对一关系) 在

    2024年02月08日
    浏览(35)
  • 将QT的UI界面转换成python文件并调用

    在QTcreator中或者QTdesigner中画好的ui界面转换成python文件,在pycharm中直接调用。 在pycharm中的终端运行命令 : *.py是对应生成的python文件的名字,*.ui是画的UI界面(对应ui界面的路径) 然后就会生成login.py文件,如下: 调用文件: 运行结果:

    2024年02月11日
    浏览(35)
  • 【python】时间与时间戳互相转换

    时间戳 : class ‘float’,1683876941.119018 时间格式: class ‘str’,“2023-05-12 15:35:41.119018” 时间戳 (timestamp):定义为从格林威治时间1970年01月01日08时00分00秒起至现在的总秒数。 以毫秒计时的时间戳一般有 13 位,可以将其除以 1000: 使用 datetime 库,将时间戳转换为时间: 也

    2024年02月13日
    浏览(31)
  • 将 Qt Designer 的 ui 文件转换为 PySide2 使用的.py 文件

    20201206 修订:在 Pyside2 的 5.15.2 版本中,从 ui 生成 py 文件过程,命令从 “uic” 变为 “pyside2-uic” Qt Designer 设计的 ui 文件,就是一个 xml 文件,通过 pyside-uic 可以转换成标准的.py 文件 。通过 QtDesigner 创建的 ui 如图: 我们切入正题: 1:首先要保证将 pyside2-uic.exe 加到环境变

    2024年02月07日
    浏览(41)
  • Qt教程 — 2.1 如何使用Qt Designer 开发UI程序

    目录 1 Qt Designer简介 2 编辑UI界面 2.1 在 UI 界面添加一个Label 2.2 在 UI 界面添加一个按钮 2.3 在 UI 文件里连接信号与槽 方法一:通过信号和槽编辑栏 方法二:通过导航区信号和槽编按钮 方法三:通过跳转编辑代码实现—通过按钮输出文字 Qt Designer 是属于 Qt Creator 的一个功能

    2024年03月22日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包