查看时间戳是否在特定小时之间
See if a timestamp is between a specific hour
我有很多时间戳,以及与之相关的数据。我想检索来自 0800 - 0900 的数据。有什么方法可以检查时间戳是否介于两者之间?我应该如何编写一个函数,输入两个小时并返回落在这些小时内的时间戳列表,无论它是哪一天?
喜欢
std::list<uint32_t> getTimestampsBetween(uint16_t min_hour, uint16_t max_hour)
{
if(timestamp from list of timestamp is between min_hour and max_hour)
add it to list;
return list;
}
使用 localtime
将时间戳转换为 struct tm
并检查结构的 tm_hour 属性是否在指定的窗口中。查看 time.h 了解更多信息。
这取决于时间戳的格式,但如果它们是time_t
的,则可以使用mktime
将给定的tm
转换为time_t
,并difftime
比较两个time_t
. 大致如下:
bool
timeIsInInterval( time_t toTest, int minHour, int maxHour )
{
time_t now = time( NULL );
tm scratch = *localtime( &now );
scratch.tm_sec = scratch.tm_min = 0;
scratch.tm_hour = minHour;
time_t start = mktime( &scratch );
scratch.tm_hour = maxHour;
time_t finish = mktime( &scratch );
return difftime( toTest, start ) >= 0.0
&& difftime( toTest, finish ) < 0.0;
}
(在实践中,toTest >= start && toTest < finish
可能是足够。 虽然标准允许更多,但我不知道有任何time_t
不是包含自某个神奇日期以来的秒数。
当然,这假设您正在寻找今天两个小时。 如果你想要一些任意的日期,很容易修改。如果你想要任何日期,你需要做相反的事情:转换时间戳到tm
,然后比较tm_hour
字段。
相关文章:
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- int(c) 和 c-'0' 之间的区别。C++
- 在cuda线程之间共享大量常量数据
- 在c代码之间共享数据的最佳方式
- Mix_Init和Mix_OpenAudio SDL之间的区别是什么
- C++ 使用 assign 函数的字符串与直接使用 '=' 更改值的字符串之间的区别
- 为什么在读取文件大小时文件IO速度会发生变化
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- std::atomic和std::condition_variable wait,notify_*方法之间的区别
- 大小相等但成员数量不同的结构之间的性能差异
- 类与私有变量的其他类之间的线程安全性
- 如何在cpp文件之间切换窗口?在Qt中
- 线程之间的布尔停止信号
- 我是C++编程的新手,这些代码之间有什么区别,我应该使用哪一个
- 在 const 函数中通过引用和指针返回之间的区别
- 我想知道长双倍和双倍之间的区别
- 查看时间戳是否在特定小时之间
- 两个时间之间经过的时间,格式为24小时hh:mm:ss
- 我正在尝试创建一个使用布尔表达式在 24 小时制和 12 小时制之间切换的函数
- 现在和现在之间的时间差为1小时(c++)