admin 管理员组文章数量: 1087709
判断2个时间戳是不是同一天
思路分析
判断2个时间戳是否不在同一天,只需要将2天各自的绝对秒数除以24 * 3600得到从epoch到现在过了多少天 然后两个结果如果相差大于0,表明不是同一天,需要重置。 但需要考虑2个因素:
- 一是当前时间减去设定的重置时间点(比如每天的5点),因为是5点重置,减去5*3600,确保当前的时间大于等于重置的时间点,即当天的5点。
- 二是绝对秒数加上对应的时区对应的那部分时间戳,这样得到的时间是对应当地时间的。 举例来说,不加时区的时间,得到的是从格林威治时间1970年1月1日00:00:00以来的第几天,北京时间比格林威治时间早8小时,那么如果是格林威治时间的16点,对应的就是北京时间的第二天的零点,而时间上我们要算的就是对应这个时区的时间对应的天数的差值,所以要加上时区。 导致的时间,即time_zone * 3600
参考链接:blog.csdn/shujianhenu…
代码实现
int time_zone = 8, daily_reset_time = 5;time_t BetweenDays(time_t time1, time_t time2)
{return (time1 + time_zone *3600)/3600/24 - (time2 + time_zone *3600)/3600/24;
}/** last_reset_time 为上次执行的每日重置时间* cur_time 为当前时间*/
bool IsTimeToReset(time_t last_reset_time, time_t cur_time)
{return BetweenDays(cur_time - 3600 * daily_reset_time, last_reset_time - 3600 * daily_reset_time) > 0;
}
复制代码
本文标签: 判断2个时间戳是不是同一天
版权声明:本文标题:判断2个时间戳是不是同一天 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1700372479a418444.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论