当前位置 博文首页 > uriel_chiang的博客:QDateTime类遇到的问题

    uriel_chiang的博客:QDateTime类遇到的问题

    作者:[db:作者] 时间:2021-07-26 17:49

    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
    下一篇:没有了