0

我一直在尝试在我的程序中使用 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())
{

所有这三个日期时间在运行时都无效。

提前致谢。

4

1 回答 1

1

由于在 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");
}

如果这在“应用程序输出”窗口(或控制台,如果您从那里运行)中显示日期无效,请清理项目并重新构建。

于 2014-10-14T15:47:45.883 回答