什么是表示日内时间的最佳方式HH:MM:SS in c ++ 11

时间:2018-01-15 16:35:03

标签: c++ date c++11 time chrono

C ++ 11 chrono提供了概念:clocktime_pointdurationHoward Hinnant's date.h library中还有其他函数来操纵日期和时间{{ 3}}。但是我很难表达一般的时间点,比如十点钟。 应该表达一般的日内时间点

  • 持续时间:今天+持续时间
  • 创建自定义时钟选择任何给定日期的时期,即:今天
  • ????

c ++ 11中以HH:MM:SS格式表示一般日内时间的最佳方法是什么?

seq = [2018-01-01 09:29:00UTC, 2018-01-01 09:29:58UTC,..., 2018-01-01 09:35:00UTC, ..., 2018-01-01 16:29:00UTC, 2018-01-01 16:30:00UTC]
for time in seq
    time > "09:30:00" and time < "16:00:00" do some work;

1 个答案:

答案 0 :(得分:1)

使用Howard Hinnant's date/time library,今天上午10点是:

#include "date/tz.h"
#include <iostream>

int
main()
{
    using namespace date;
    using namespace std::chrono;
    auto zt = make_zoned(current_zone(), local_days{2018_y/jan/15} + 10h);
    std::cout << zt << '\n';
}

只为我输出:

2018-01-15 10:00:00 EST

local_days用于将年/月/日转换为local_time,精度为days。您可以使用您想要的任何单位向其添加任何chrono::duration。然后,您可以将local_time与您希望获得time_zone当地时间的任何time_zone配对。