我们的程序在运行时,有时会需要知道当前日期的零点的时间戳或者下一个零点的时间戳,例如需要在零点 做磁盘维护、数据库维护等工作,此例子是获取当前日期和明天的零点时间戳。拿出来与大家分享。
//计算指定时间0点的时间戳
uint64_t timestamp_zerohour_time(uint64_t ts){
time_t t = (time_t)ts;
struct tm * tm= localtime(&t);
tm->tm_hour = 0;
tm->tm_min = 0;
tm->tm_sec = 0;
return mktime(tm);
}
//当前日期0点的时间戳,秒级
uint64_t timestamp_zerohour()
{
time_t t = time(NULL);
return timestamp_zero_time(t);
}
//下一个零时/明天零时的时间戳
uint64_t timestamp_next_zerohour(){
time_t t = time(NULL);
return (timestamp_zerohour_time(t+86400);
}