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;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值