time_t四舍五入到分钟

时间:2017-12-14 05:53:01

标签: c++ mfc

我正在使用处理time_t的API。现在我也有一个来自API的结果,它也检测time_t中的数据,但问题是第一个只需要日期,小时和分钟,但我检索的数据包括秒,我怎样才能从数据中删除秒>

     m_chart.period =   PERIOD_M1;
     m_chart.start  =   m_trades[x].open_time;
     m_chart.end    =   m_trades[x].close_time;
     m_chart.mode   =   CHART_RANGE_IN;
     candles        =   m_manager->ChartRequest(&m_chart, &stamp, &chart_total);

其中m_trades [x] .open_time是我用秒检索的数据,而m_chart.start是只需要日期,小时和分钟的过滤数据。

我希望你能帮我解决这个问题。

感谢。

1 个答案:

答案 0 :(得分:2)

time_t是几秒钟,所以如果你想让它只包含几分钟,你必须减去余数秒,如:

t -= (t % 60) // minutes_only_sec = total_seconds - seconds_reminder_seconds

e.g

time_t secs = 2 * 60 + 14;           // 2:14

time_t min_only = (secs - secs % 60);

std::cout << "seconds:" << secs << " / " << min_only << std::endl;
std::cout << "minutes: " << secs / 60 << ":" << (secs % 60)
              << " / " << min_only / 60 << ":" << (min_only % 60) << std::endl;

具有以下输出:

  

秒:134/120

     

分钟2:14/2:0

如果你想要进行整理,你可以测试:

if (secs % 60)
{
    min_only += 60;
}

我建议使用std::chrono::duration。它有点长:

    time_t min_only = std::chrono::seconds(
          std::chrono::duration_cast<std::chrono::minutes>(std::chrono::seconds(secs))
                                           ).count();