Qt seconds to DD HH SS



使用 Qt 4.8 如何以 DD HH SS 格式打印时间?我有几秒钟,我想以这种格式取回一个字符串。

QDateTime::fromTime_t(seconds).toString("ss hh DD");

见 http://qt-project.org/doc/qt-5.0/qdatetime.html#toString

如果你想要一个持续时间(你的问题真的不清楚),请尝试这样的事情:

QString seconds_to_DHMS(quint32 duration)
{
  QString res;
  int seconds = (int) (duration % 60);
  duration /= 60;
  int minutes = (int) (duration % 60);
  duration /= 60;
  int hours = (int) (duration % 24);
  int days = (int) (duration / 24);
  if((hours == 0)&&(days == 0))
      return res.sprintf("%02d:%02d", minutes, seconds);
  if (days == 0)
      return res.sprintf("%02d:%02d:%02d", hours, minutes, seconds);
  return res.sprintf("%dd%02d:%02d:%02d", days, hours, minutes, seconds);
}

由于服务器正常运行时间以秒为单位,因此可以使用QDateTime类。

QDateTime::fromTime_t(duration).toUTC().toString("dd hh ss");

请注意toUTC,即将开始小时设置为 0。由于您只会记录日期、小时和秒,因此秒数是否自该日期以来并不重要,因为不会显示年份。

您可以使用 QDateTime::fromTime_t :

返回一个日期时间,其日期和时间是自 1970-01-01T00:00:00(协调世界时 (Qt::UTC) 以来经过的秒数。

您要打印的是持续时间...不是时钟时间的"时刻"。 QDateTime除了计算secsTo(和daysTo)之外,对持续时间没有太多作用,而且你几乎必须自己打印。

好消息是数学并不难:

将秒转换为天,分钟和秒

尽管您对//等单词的国际化可能会令人讨厌。 :(

数学非常困难。天不是 24 小时,它们通常是 24 小时,但有时是 23 或 25(夏令时变化)或 24 小时零一两秒(闰秒)。同样的问题适用于几个月(显然,因为不同大小的月份很常见)年(闰日),以及实际上任何通过用天(周)定义来继承日问题的东西。

最新更新