比较两个日期::hh_mm_ss in C++

Comparing two date::hh_mm_ss in C++

提问人:afp_2008 提问时间:11/9/2023 最后编辑:afp_2008 更新时间:11/9/2023 访问量:64

问:

是否可以比较 Howard Hinnant 的日期库中的两个类型变量?我知道我可以将它们转换为秒并进行比较,但我想知道该库是否为日期、时间或日期时间比较提供了内置功能。date::hh_mm_ss

date::hh_mm_ss tod1{std::chrono::hours{10} + std::chrono::minutes{00} + std::chrono::seconds{00}};
date::hh_mm_ss tod2{std::chrono::hours{8} + std::chrono::minutes{00} + std::chrono::seconds{00}};
std::cout << (tod1 < tod2) << "\n";

我明白了.error: no match for ‘operator<’

C++ 日期时间

评论

1赞 Thomas Weller 11/9/2023
为什么要使用一个不能做你想要的额外的库,当你想要的东西已经内置到 C++ 标准库中时?我不明白。godbolt.org/z/Gzs49xedz
1赞 Alan Birtles 11/9/2023
不,它旨在用作格式化工具,一般来说,您最好使用持续时间
1赞 Weijun Zhou 11/9/2023
请注意,它是自 c++20 以来标准库的一部分。hh_mm_ss
1赞 JaMiT 11/9/2023
其他评论中声明的参考: cppreference.com:“它主要是一种格式化工具。 (我还想提一下,这与.相似的名字并非巧合;您正在查看的日期库已合并到 C++ 20 中。std::hh_mm_ssdate::hh_mm_ss

答:

1赞 Howard Hinnant 11/9/2023 #1

要比较两个,请调用每个 的成员函数并比较它们:hh_mm_ssto_duration()

std::cout << (tod1.to_duration() < tod2.to_duration()) << "\n";