Qt4 在 QDateTime 中格式化小时的问题

发布于 2024-10-30 22:10:10 字数 389 浏览 0 评论 0原文

我对以下代码有问题:

QDateTime test2;
test2.setTime_t(25);
qDebug() << test2.toString("hh:mm:ss");

这会打印“01:00:25”而不是 00:00:25。 为什么第一个小时设置为 01 而不是 00 ?

我想也许使用了 am/pm 符号,所以我尝试了这个

QDateTime test2;
test2.setTime_t(3600*22+25);
qDebug() << test2.toString("hh:mm:ss");

,但我仍然收到输出

“23:00:25”

帮助:)

I've a problem with following code:

QDateTime test2;
test2.setTime_t(25);
qDebug() << test2.toString("hh:mm:ss");

this prints "01:00:25" to output instead of 00:00:25.
Why is the first hour set to 01 instead of 00 ?

I thought that maybe am/pm notation is used so i tried this

QDateTime test2;
test2.setTime_t(3600*22+25);
qDebug() << test2.toString("hh:mm:ss");

And still i received on output

"23:00:25"

Help :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

别再吹冷风 2024-11-06 22:10:10

这是因为您没有将 QDateTime 设置为 UTC。那么,UTC 时间 1970 年 1 月 1 日的 00:00:25 可能是您当地时区的 01:00:25?你的代码对我来说是“10:00:25”,时间为 UTC+10 :)

试试这个:

QDateTime test2;
test2.setTimeSpec(Qt::UTC);    
test2.setTime_t(25);
qDebug() << test2.toString("hh:mm:ss");

It's because you didn't set the QDateTime to UTC. So, 00:00:25 on Jan 1st 1970 in UTC time was probably 01:00:25 in your local timezone? And your code says "10:00:25" for me, at UTC+10 :)

Try this:

QDateTime test2;
test2.setTimeSpec(Qt::UTC);    
test2.setTime_t(25);
qDebug() << test2.toString("hh:mm:ss");
小嗷兮 2024-11-06 22:10:10

补充一下,UTC 似乎在惹你生气。检查输出的最后一行:

#include <QCoreApplication>
#include <QDateTime>
#include <QDebug>

int main(int argc, char **argv)
{
    QCoreApplication app(argc, argv );

    QDateTime test1;
    test1.setTime_t(25);
    qDebug() << "Local 1: " << test1.toString("hh:mm:ss");
    qDebug() << "Local 1: " << test1.toString();
    qDebug() << "UTC   1: " << test1.toUTC().toString();

    QDateTime test2;
    test2.setDate(QDate(1970,01,01));
    test2.setTime(QTime(00,59));
    qDebug() << "Local 2: " << test2.toString("hh:mm:ss");
    qDebug() << "Local 2: " << test2.toString();
    qDebug() << "UTC   2: " << test2.toUTC().toString();

    return 0;
}

Output:

Local 1:  "01:00:25" 
Local 1:  "Thu Jan 1 01:00:25 1970" 
UTC   1:  "Thu Jan 1 00:00:25 1970" 
Local 2:  "00:59:00" 
Local 2:  "Thu Jan 1 00:59:00 1970" 
UTC   2:  "Wed Dec 31 23:59:00 1969" 

PS: I'm at UTC + 1

Just to add, it seems UTC is messing with you. Check the last line of the output:

#include <QCoreApplication>
#include <QDateTime>
#include <QDebug>

int main(int argc, char **argv)
{
    QCoreApplication app(argc, argv );

    QDateTime test1;
    test1.setTime_t(25);
    qDebug() << "Local 1: " << test1.toString("hh:mm:ss");
    qDebug() << "Local 1: " << test1.toString();
    qDebug() << "UTC   1: " << test1.toUTC().toString();

    QDateTime test2;
    test2.setDate(QDate(1970,01,01));
    test2.setTime(QTime(00,59));
    qDebug() << "Local 2: " << test2.toString("hh:mm:ss");
    qDebug() << "Local 2: " << test2.toString();
    qDebug() << "UTC   2: " << test2.toUTC().toString();

    return 0;
}

Output:

Local 1:  "01:00:25" 
Local 1:  "Thu Jan 1 01:00:25 1970" 
UTC   1:  "Thu Jan 1 00:00:25 1970" 
Local 2:  "00:59:00" 
Local 2:  "Thu Jan 1 00:59:00 1970" 
UTC   2:  "Wed Dec 31 23:59:00 1969" 

PS: I'm at UTC + 1

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文