C++ 中的 Qt Qdate 函数年份问题
简单的问题:我想将当前日期写入文件中。以下是我的代码:
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
十六进制的 2022 是 0x7E6,当您将其转换为 uint8 时,最高有效位将被截断以获得您指示的内容。这个想法是使用模运算符将 2022 转换为 22,然后保存:
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: