C++ 中的 Qt Qdate 函数年份问题

发布于 2025-01-10 05:08:09 字数 568 浏览 0 评论 0原文

简单的问题:我想将当前日期写入文件中。以下是我的代码:

void fileWR::write()
{
QFile myfile("date.dat");
if (myfile.exists("date.dat"))
myfile.remove();

myfile.open(QIODevice::ReadWrite);
QDataStream out(&myfile);
out << (quint8) QDate::currentDate().day();     // OK!!
out << (quint8) QDate::currentDate().month();   // OK!!
out << (quint8) QDate::currentDate().year();    // NOT OK !!!

myfile.close();
}

当我读取文件时,我发现一个字节代表日期(0x18 代表 24 日),一个字节代表月份(0x02 代表二月)),一个错误的字节代表年份(0xe6 代表 2022 年)。我需要年份的最后两个数字(例如:2022 -> 22)。 我该怎么办? 谢谢 保罗

Simple question: I'd like to write current date in a file. The following is my code:

void fileWR::write()
{
QFile myfile("date.dat");
if (myfile.exists("date.dat"))
myfile.remove();

myfile.open(QIODevice::ReadWrite);
QDataStream out(&myfile);
out << (quint8) QDate::currentDate().day();     // OK!!
out << (quint8) QDate::currentDate().month();   // OK!!
out << (quint8) QDate::currentDate().year();    // NOT OK !!!

myfile.close();
}

When I read the file, I found a byte for the day number(0x18 for 24th), a byte for month(0x02 for February)) and one wrong byte for year (0xe6 for 2022). I need the last two numbers for year (eg: 2022 -> 22).
How can I do?
Thanks
Paolo

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

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

发布评论

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

评论(1

御守 2025-01-17 05:08:09

十六进制的 2022 是 0x7E6,当您将其转换为 uint8 时,最高有效位将被截断以获得您指示的内容。这个想法是使用模运算符将 2022 转换为 22,然后保存:

QDataStream out(&myfile);
QDate now = QDate::currentDate();
out << (quint8) now.day();
out << (quint8) now.month();
out << (quint8) (now.year() % 100);

2022 in hexadecimal is 0x7E6 and as you save converting it to uint8 then the most significant bits will be truncated obtaining what you indicate. The idea is to convert 2022 to 22 using the module operator and then save it:

QDataStream out(&myfile);
QDate now = QDate::currentDate();
out << (quint8) now.day();
out << (quint8) now.month();
out << (quint8) (now.year() % 100);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文