c++ - 在 C++11 中进行相对时间比较的最简洁方法

标签 c++ c++-chrono

假设我有一个事件流,每个事件都有完整的时间戳,跨越很多天。我想将它们与一天中的时间进行比较,但不管是哪一天。例如,如果给定事件发生在 12:00:00 和 12:05:00 之间,请执行某些操作,但无论是哪一天。

事件时间戳自然适合 std::chrono::time_point 对象。 std::chrono 中进行这些比较的最惯用的方法是什么?是否有一个对象可以代表一天中的某个时间而不特定于某一天?我必须自己推出吗?

最佳答案

你可以这样做:

auto timePoint = std::chrono::system_clock::now();
std::time_t t = std::chrono::system_clock::to_time_t(timePoint);
auto ltime = std::localtime(&t); // or gmtime.
auto eventTime = std::chrono::hours(ltime->tm_hour)
    + std::chrono::minutes(ltime->tm_min);

auto lower_bound = std::chrono::hours(12) + std::chrono::minutes(0);
auto upper_bound = std::chrono::hours(12) + std::chrono::minutes(5);

if (lower_bound <= eventTime && eventTime <= upper_bound) {
    // Do some action.
}

关于c++ - 在 C++11 中进行相对时间比较的最简洁方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25106512/

相关文章:

c++ - 将 time_point 转换为字符串的最漂亮方法是什么?

c++ - 将 char 数组转换为另一种类型是否违反严格的别名规则?

c++ - C++中具有虚拟继承的类大小

C++ 在 'std::cin' 中不匹配 'operator>>'

c++ - 对象的生命周期

c++ - Chrono 程序中永远不会触发条件语句

c++ - std::chrono 乘以持续时间

c++ - 基于<chrono>改进一个定时器类

c++ - 在 C++ 函数中通过引用传递

python - 如何使用 boost.python 跨模块使用类?