根据当前时间返回下一秒
Return next full second based on current time
我试图创建一个函数,将返回下一个完整的秒,但通过c++11 std::chrono
文档我找不到任何明显的方法来完成。
示例:如果当前时间是09:50:01.1234
,我希望函数返回09:50:02.0000
(即下一个完整秒)。
std::chrono::system_clock::time_point return_next_full_second()
{
using namespace std::chrono;
system_clock::time_point now = system_clock::now();
system_clock::time_point next_full_second = // How?
return next_full_second;
}
关于如何实现这一点,如果可能的话,使用std::chrono
有什么提示吗?
我想要达到的目标是执行一个特定的动作,尽可能接近每一秒。所以我将使用结果来睡眠return_next_full_second() - system_clock::now()
的持续时间。
你可以将持续时间设置为秒:
#include <chrono>
#include <iostream>
std::chrono::system_clock::time_point return_next_full_second()
{
using namespace std::chrono;
system_clock::time_point now = system_clock::now();
auto s = duration_cast<seconds>(now.time_since_epoch());
return system_clock::time_point(++s);
}
int main() {
using namespace std::chrono;
auto t = return_next_full_second();
auto d = duration_cast<milliseconds>(t.time_since_epoch());
std::cout << d.count() << 'n';
}
您可以使用静态system_clock::to_time_t
方法获得time_t
对象。
time_t
通常是"seconds since epoch ",所以它已经四舍五入到seconds。
那么你可以使用system_clock::from_time_t
从time_t
获得一个system_clock::time_point
对象。
要确保to_time_t
真的将向上舍入,只需将舍入的时间点与初始时间点进行比较。
此解决方案的唯一问题是time_t
没有严格定义为以秒为单位,因此该解决方案可能不具有可移植性。
相关文章:
- 循环中的变量被设置为下一个数组的元素始终具有相同的内存地址?
- 无法使用两个包装不同下一层的ssl_stream编译代码
- 如何在没有运算符>>的情况下从字符串流返回下一个令牌?
- Fibbonaci 递归代码返回错误值,始终返回下一个数字
- 使用 fstream 在空格分隔文件中查看下一项(不仅仅是一个字符)的方法
- D3DXPLANENERAMALAGE仅返回归一化平面或对其进行修改
- GoogleMock:如何保存参数,以便在模拟上的下一次调用中使用
- switch 语句结束和下一条语句之间的时间是否具有确定性(与路径无关)
- C++显示图像并将其保持到下一张图像的最佳方法
- 在C++中,文件中的下一条记录被非法更新
- 为什么弦乐在代表时不会移至下一组字符
- 检查下一步是检查员
- 如果没有线程阻塞信号,并且有一个线程处于"sigwait()"中,是否可以保证被阻塞的线程将接收下一
- QT4 QListView保存图标位置下一次由手动移动
- 改进malloc()算法的下一步是什么
- C++:为什么创建的向量没有传递到下一组 for 循环
- gsoap 在我调用的每一秒都会对我的应用程序(用 C 编写)进行分段错误
- 需要帮助来理解下一节课的目的
- 根据当前时间返回下一秒
- "Peek ahead"检查下一次对getline(file,line)的调用是否会返回false - 而不实际调用它,即不消耗该行