将日期时间六个独立数据转换为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