我一直试图在我的程序中使用QDateTime一段时间,没有这样的运气。我不确定我做错了什么,这让我有点生气。
代码段如下:
QDateTime dteNow = QDateTime::currentDateTime();
QDateTime dteStart = QDateTime::fromString(QString::fromStdString(advertSchedule.ValidFrom),"yyyy-MM-dd hh:mm:ss"); //ValidFrom = "1990-01-01 00:00:00"
QDateTime dteFinish = QDateTime::fromString(QString::fromStdString(advertSchedule.ValidTo),"yyyy-MM-dd hh:mm:ss"); //ValidTo = "2015-01-01 00:00:00"
//Breakpointed on the line below. Continuing to run causes an exception.
//Hovering over the QDateTime objects displays "dteNow (invalid) QDateTime".
if(dteNow >= dteStart
&& dteNow < dteFinish
&& dteNow.time() >= dteStart.time()
&& dteNow.time() < dteFinish.time())
{
这三个日期时间在运行时都无效。
提前致谢。
答案 0 :(得分:0)
由于在QDateTime上调用.time()时会导致异常,因此一个或多个QDateTime对象无效。
我建议你细分这些内容: -
QDateTime::fromString(QString::fromStdString(advertSchedule.ValidFrom),"yyyy-MM-dd hh:mm:ss");
QDateTime dteFinish = QDateTime::fromString(QString::fromStdString(advertSchedule.ValidTo),"yyyy-MM-dd hh:mm:ss");
检查调用QString :: fromStdString(advertSchedule.ValidFrom)和QString :: fromStdString(advertSchedule.ValidTo)时返回的内容。
请尝试以下方法: -
QDateTime dteNow = QDateTime::currentDateTime();
if(dteNow.isValid())
{
qDebug("The date is valid: %s\n", dteNow.toString());
}
else
{
qDebug("The current date returned is invalid\n");
}
如果在“应用程序输出”窗口(或控制台,如果您从那里运行)打印出日期无效,请清理项目并重建。