![](/img/trans.png)
[英]How do I represent a time difference in an `std::time_t` variable as days, hours, minutes and seconds?
[英]time_t rounded to minutes
我正在使用处理time_t的API。 现在我也从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是仅需要日期,小时和分钟的筛选器数据。
希望您能帮我解决这个问题。
谢谢。
time_t
以秒为单位,因此,如果您希望它仅包含整数分钟,则必须减去剩余的秒数,例如:
t -= (t % 60) // minutes_only_sec = total_seconds - seconds_reminder_seconds
例如
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();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.