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

Qt Qdate function in C++ problem with year

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

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)。 我能怎么做? 谢谢 保罗

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);