当前位置 博文首页 > uriel_chiang的博客:QDateTime类遇到的问题
QDateTime类
#include <qdatetime.h>
fromeString方法——从字符串QString到时间日期格式QDateTime
原文:
QDateTime QDateTime::fromString ( const QString & string, Qt::DateFormat format = Qt::TextDate ) [static]
QDateTime QDateTime::fromString ( const QString & string, const QString & format ) [static]
试验程序:
QString endtime1=ui->endTime1->text();
QString endtime2=ui->startTime1->text();
QString endtime3="2001/01/01 17:10:16";
QDateTime midTime1=QDateTime::fromString("2001/01/01 17:10:15","yyyy/MM/dd hh:mm:ss");
qDebug()<<"------------------------------------------------------------------";
qDebug()<<endtime1;
QDateTime midTime2=QDateTime::fromString(endtime1,"yyyy/M/d h:mm:ss");
QDateTime midTime3=QDateTime::fromString(endtime3,"yyyy/MM/dd hh:mm:ss");
qDebug()<<midTime1;
qDebug()<<midTime2;
qDebug()<<midTime3;
需要注意的是:格式format和字符串的完全对应,不然返回日期时间为空;
时间表达式:
h - 没有前置0的数字的小时(0-23或者如果显示AM/PM时,1-12)
hh - 前置0的数字的小时(00-23或者如果显示AM/PM时,01-12)
m - 没有前置0的数字的分钟(0-59)
mm - 前置0的数字的分钟(00-59)
s - 没有前置0的数字的秒(0-59)
ss - 前置0的数字的秒(00-59)
z - 没有前置0的数字的毫秒(0-999)
zzz - 前置0的数字的毫秒(000-999)
AP - 切换为AM/PM显示。AP将被“AM”或“PM”替换。
ap - 切换为am/pm显示。ap将被“am”或“pm”替换。
日期表达式:
d - 没有前置0的数字的天(1-31)
dd - 前置0的数字的天(01-31)
ddd - 缩写的日名称(Mon-Sun)。使用QDate::shortDayName()。
dddd - 长的日名称(Monday-Sunday)。使用QDate::longDayName()。
M - 没有前置0的数字的月(1-12)
MM - 前置0的数字的月(01-12)
MMM - 缩写的月名称(Jan-Dec)。使用QDate::shortMonthName()。
MMMM - 长的月名称(January-December)。使用QDate::longMonthName()。
yy - 两位数字的年(00-99)
yyyy - 四位数字的年(0000-9999)
toString()方法:QDateTime 转换为QString
QDateTime current=QDateTime::currentDateTime();
QString time=current.toString("yyyy-m-dd hh:mm:ss");
qDebug()<<time;
qDebug()<<current;
daysTo方法:
int QDateTime::daysTo ( const QDateTime & dt ) const
返回从这个日期时间到dt的天数(如果dt早于这个日期时间,返回的为负数)。
secsTo 方法:
int QDateTime::secsTo ( const QDateTime & dt ) const
返回从这个日期到dt的秒数(如果dt早于这个日期,返回的为负数)。
举例:
QDateTime now = QDateTime::currentDateTime();
QDateTime xmas(QDate(now.date().year(), 12, 25), QTime(0, 0));
qDebug("There are %d seconds to Christmas", now.secsTo(xmas));
试验:
需求:
TimeSpan midTime = DateTime.Parse(endTime1.Text) - DateTime.Parse(startTime1.Text);
hour =Convert.ToString( Convert.ToInt16( midTime.TotalHours.ToString())*60);
程序:
const QString endtime1=ui->endTime1->text();
const QString starttime1=ui->startTime1->text();
qDebug()<<"------------------------------------------------------------------";
qDebug()<<endtime1;
QDateTime midendTime=QDateTime::fromString(endtime1,"yyyy/M/d h:mm:ss");
QDateTime midstaTime=QDateTime::fromString(starttime1,"yyyy/M/d h:mm:ss");
qDebug()<<midendTime;
qDebug()<<midstaTime;
qDebug()<<"------------------------------------------------------------------";
int sec=midstaTime.secsTo(midendTime);
sec/=60;
sec/=60;
qDebug()<<sec;
cs