将日期时间六个独立数据转换为QDatetime类型函数

Posted sunguiy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将日期时间六个独立数据转换为QDatetime类型函数相关的知识,希望对你有一定的参考价值。

今天在写QT程序的时候需要从文件中把日期时间读取成int和double类型的数据,想要把这读进来的日期时间设置到QDatetimeEdit组件上,查了半天也没有找到直接设置的方法,后来经过查找资料发现可以先把上述的时间日期转换为规定类型(比如:“yy-MM-dd hh:mm:ss”)的QString之后,就可以转换为QDatetime类型,进而设置组件了,该函数记录如下:

  1 /*********************************************************************************************
  2 * sun 20200525
  3 * By sunguiyu96@gmail.com
  4 * 把int型的年月日转换为QDatetime
  5 * 输入:年月日时分秒
  6 * 输出:QDatetime
  7 * 进程:
  8 * 2020/05/26 sun 16:14:开始;
  9 * 2020/05/26 sun 16:44:无误;
 10 **********************************************************************************************/
 11 QDateTime Widget::intToQDatetime(int year,int month,int day,int hour,int minute,double second_d)
 12 {
 13     QDateTime DT;
 14     QString DT_s,year_s,month_s,day_s,hour_s,minute_s,second_s;      //为转换为时间格式做准备
 15     //
 16     if(year >= 1000 && year <= 9999)
 17     {
 18         year_s = QString::number(year);        //考虑年一定为4位
 19     }
 20     else
 21     {
 22         ui ->textEdit_2 ->setText("Year Error");  //报错
 23     }
 24     //
 25     if(month < 10 && month > 0)
 26     {
 27         month_s = QString::number(month);
 28         month_s = "0" + month_s;//补0
 29     }
 30     else if(month < 13 && month > 9)
 31     {
 32         month_s = QString::number(month);
 33     }
 34     else
 35     {
 36         ui ->textEdit_2 ->setText("Month Error");  //报错
 37     }
 38     //
 39     if(day < 10 && day > 0)
 40     {
 41         day_s = QString::number(day);
 42         day_s = "0" + day_s;//补0
 43     }
 44     else if(day < 32 && day > 9)
 45     {
 46         day_s = QString::number(day);
 47     }
 48     else
 49     {
 50         ui ->textEdit_2 ->setText("Day Error");  //报错
 51     }
 52     //
 53     if(hour < 10 && hour > 0)
 54     {
 55         hour_s = QString::number(hour);
 56         hour_s = "0" + hour_s;//补0
 57     }
 58     else if(hour < 25 && hour > 9)
 59     {
 60         hour_s = QString::number(hour);
 61     }
 62     else
 63     {
 64         ui ->textEdit_2 ->setText("Hour Error");  //报错
 65     }
 66     //
 67     if(minute < 10 && minute > 0)
 68     {
 69         minute_s = QString::number(minute);
 70         minute_s = "0" + minute_s;//补0
 71     }
 72     else if(minute < 61 && minute > 9)
 73     {
 74         minute_s = QString::number(minute);
 75     }
 76     else
 77     {
 78         ui ->textEdit_2 ->setText("Minute Error");  //报错
 79     }
 80     //
 81     int second = (int)second_d;
 82     if(second < 10 && second > 0)
 83     {
 84         second_s = QString::number(second);
 85         second_s = "0" + second_s;//补0
 86     }
 87     else if(second <= 60 && second >= 10)
 88     {
 89         second_s = QString::number(second);
 90     }
 91     else
 92     {
 93         ui ->textEdit_2 ->setText("Second Error");  //报错
 94     }
 95     DT_s = year_s + "-" + month_s + "-" + day_s + " " + hour_s + ":" + minute_s + ":" + second_s;
 96 //    qDebug() << "Str:" << DT_s << endl;
 97     DT = QDateTime::fromString(DT_s,"yyyy-MM-dd hh:mm:ss");
 98 //    qDebug() << DT.toString("yyyy-MM-dd hh:mm:ss")  << endl;
 99 
100     return DT;
101 }

 

以上是关于将日期时间六个独立数据转换为QDatetime类型函数的主要内容,如果未能解决你的问题,请参考以下文章

从 QDataStream 读取 QDateTime 给出 null

将包含 PostgreSQL 时间戳的 QString 转换为 QDateTime

QwtPlot 显示错误的日期/时间

日期与时间控件QDate, QTime, QDateTime

如何将日期时间转换为数字数据类型?

SQL-将BIGINT(20)转换为日期时间数据类型