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

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

C++11 chrono提供概念:clock , time_point , durationHoward Hinnant's date.h library还有其他函数可以操纵日期和时间 with motivating examples/reciepes .但是我很难表达一般的时间点,比如十点钟。 一般的盘中时间点是否应该表示

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

在 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;

最佳答案

使用 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。您可以使用任何您想要的单位向其中添加任何 chrono::duration。然后,您可以将该 local_time 与您想要获取该 time_zone 中的本地时间的任何 time_zone 配对。

关于c++ - 表示盘中时间的最佳方式是什么 HH :MM:SS in c++11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48267136/

相关文章:

javascript - 如何在 INTEL XDK 中将今天的日期设置为默认日期并且每天都会更改?

python - 将 Twitter XML 日期转换为 Python 日期对象

c++ - 在输出参数中使用 auto

c++ - SSE跨平台指令集

java - 将现有的 C++(.h 和 .cpp)文件转换为适用于 Android 的 java

c++ - 模板类的链接器错误

c++ - C++ 标准是否允许双括号标量初始化?

c++ - 如何将 vector<vector<Point>> 轮廓转换为 CVPoint 或 cvpoint2d32f?

java - 如何从字符串构造日期

c++11 - 访问循环范围内的迭代器 (c++11)