简介:
COleDateTime类型实现为一个浮点值,从1899年12月30日午夜起计算"日"数。所以1899年12月31日午夜用数1.0来表示。相似的,1900年1月1日下午6时用数2.75来表示,1899年12月29日午夜是-1.0。而1899年12月29日下午6 时用数-0.25来表示。
这段话是百度百科上面的,这段话的意思就是说,ColeDateTime类是用一个八个字节的double类型的,双精度浮点来表示从1899年到现在的时间,事件的整数部分就是代表的天。小数部分就是代表的几分之一天,例如1.25,就是代表的1右四分分之一天。这样的话1.25就标的的是1900年1月1日上午的6点。
所以,天数对应的秒数的计算公式就是:
秒 = double值*3600*24;
QDateTime对象通常可以由明白地给定的日期和时间来创建,或者使用静态函数currentDateTime()让QDateTime对象包含系统时钟的日期时间。日期时间也可以由setDate()和setTime()来改变。日期时间也可以通过使用setTime_t()函数来得到一个POSIX标准的时间,它表示的是自从1970年1月1日00:00:00以来的秒数。fromString()函数通过一个给定的字符串和在字符串中日期时间格式的间隔说明就可以返回一个QDateTime。
上面这段话是摘自,QT的帮助手册;从这段话可以看出QT中的时间类是从1970年1月1日00:00:00以来的秒数所以我们就可以通过,秒数这个连接纽带进行转换。
转化之前需要熟悉QDateTime中的两个函数;
构造函数:
QDateTime::QDateTime ( const QDate & date )
构造一个日期为date和零时间(00:00:00.000)的日期时间。
转化函数:
QDateTime QDateTime::addSecs ( int nsecs ) const
返回这个日期时间对象nsecs秒之后的一个日期时间对象(或者nsecs秒之前的,如果它是一个负数)。
具体实现流程代码:
QDateTime date(QDate(1970,1,1));//构造出1970的起点时间
senc = (senc - 25569)*3600*24;//转化出秒QDateTime date1 = date.addSecs((qint64)senc);//加上出需求时间对象/*使用方法*/ list<<QString(date1.date().year()+"-"+date1.date().month())+"-"+date1.date().day(); list<<QString(date1.time().hour()+":"+date1.time().minute())+":"+date1.time().second();