【问题标题】:Qt seconds to DD HH SSQt 秒到 DD HH SS
【发布时间】:2012-04-17 15:27:32
【问题描述】:

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

【问题讨论】:

    标签: c++ qt4 intervals datetime-format duration


    【解决方案1】:
    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);
    }
    

    【讨论】:

    • 您可以在此处使用toUTC() 而不是seconds_to_DHMSQDateTime::fromTime_t(seconds).toUTC().toString("ss hh DD");
    • QDateTime::fromTime_t()在 Qt5 中已过时,不鼓励使用。 doc.qt.io/qt-5/qdatetime-obsolete.html
    【解决方案2】:

    由于您的服务器正常运行时间为秒,您可以使用QDateTime 类。

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

    注意toUTC,这是将开始时间设置为 0。由于您只会获取日期、小时和秒,因此如果秒不是自该日期以来的秒数并不重要,因为年份不会'不会显示。

    【讨论】:

    • toUTC() 是关键一步!
    【解决方案3】:

    你可以使用QDateTime::fromTime_t

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

    【讨论】:

    • 我认为这不是我所需要的,因为从那个日期起秒数就没有了。这是服务器正常运行时间
    【解决方案4】:

    您要打印的是一段时间......而不是时钟时间的“时刻”。除了计算secsTo(和daysTo)之外,QDateTime 对持续时间的作用不大,而且您几乎必须自己打印。

    好消息是数学并不难:

    Convert seconds to Days, Minutes and Seconds

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

    【讨论】:

      【解决方案5】:

      数学非常难。天不是 24 小时,它们通常是 24 小时,但有时是 23 或 25(夏令时更改)或 24 小时和一两秒(闰秒)。同样的问题会持续数月(显然,因为不同大小的月份很常见)年(闰日),并且实际上任何通过以天(周)定义来继承天问题的东西。

      【讨论】:

        猜你喜欢
        • 2019-02-17
        • 1970-01-01
        • 1970-01-01
        • 2010-11-22
        • 2018-11-08
        • 2013-07-22
        相关资源
        最近更新 更多