Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt-获取两个datetime对象之间的时间跨度_C++_Qt - Fatal编程技术网

C++ Qt-获取两个datetime对象之间的时间跨度

C++ Qt-获取两个datetime对象之间的时间跨度,c++,qt,C++,Qt,我有两个datetime对象,比如“2013-06-13 11:00:45”、“2013-06-14 09:03:23” 如何获取这两个日期时间之间的时间跨度(以“X天,X小时,X分钟,X秒”的形式) 目前,您必须使用并计算出天数、小时数、分钟数和秒数 但是,有计划将QTimeSpan类添加到Qt: 目前还不清楚何时会将其添加到Qt中;合并请求已经有将近2年的历史了。但是,如果愿意,您可以从上述合并请求中获取代码并将其编译到您的项目中。可能有助于格式化()结果中少于一天的部分,例如: 默认情况

我有两个datetime对象,比如“2013-06-13 11:00:45”、“2013-06-14 09:03:23”

如何获取这两个日期时间之间的时间跨度(以“X天,X小时,X分钟,X秒”的形式)

目前,您必须使用并计算出天数、小时数、分钟数和秒数

但是,有计划将
QTimeSpan
类添加到Qt:

目前还不清楚何时会将其添加到Qt中;合并请求已经有将近2年的历史了。但是,如果愿意,您可以从上述合并请求中获取代码并将其编译到您的项目中。

可能有助于格式化()结果中少于一天的部分,例如:


默认情况下,日期使用本地时区。在找到差异之前,将日期转换为“从历元算起的秒数”,即,如果日期之间存在DST转换,或者UTC偏移量因任何其他原因发生变化,则将其考虑在内(如果相应的平台支持它)。POSIX time不计算闰秒数(您可以使用“右”时区来计算闰秒数)。

简单的替代方法是Qt的TimeDelta类:
#include <QString>
#include <QTime>

/// seconds as "X days, X hours, X minutes, X seconds" string
QString secondsToString(qint64 seconds)
{
  const qint64 DAY = 86400;
  qint64 days = seconds / DAY;
  QTime t = QTime(0,0).addSecs(seconds % DAY);
  return QString("%1 days, %2 hours, %3 minutes, %4 seconds")
    .arg(days).arg(t.hour()).arg(t.minute()).arg(t.second());
}
#include <QDateTime>
#include <QDebug>   

int main()
{
  QString format = "yyyy-MM-dd HH:mm:ss";
  QDateTime a = QDateTime::fromString("2013-06-13 11:00:45", format);
  QDateTime b = QDateTime::fromString("2013-06-14 09:03:23", format);
  qDebug() << secondsToString(a.secsTo(b));
}
"0 days, 22 hours, 2 minutes, 38 seconds"