我正在使用处理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是只需要日期,小时和分钟的过滤数据。
我希望你能帮我解决这个问题。
感谢。
答案 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();