获取礼拜一的时间戳
UINT64 GetWeekBeginTime()
{
time_t t;
t = time(0);
tm* t_tm = localtime(&t);
t_tm->tm_hour = 0;
t_tm->tm_min = 0;
t_tm->tm_sec = 0;
t_tm->tm_wday = 0; 不生效
t = mktime(t_tm);
return (UINT64)t;
}
源码没有用到这个逻辑
问题 从现网拉到的函数存在问题 直接置 wday为0 在某些编译器下无法生效 所以优化了下逻辑
time_t getWeekFirstTimeStamp()
{
time_t t;
t = time(0);
tm *t_tm = localtime(&t);
t_tm->tm_hour = 0;
t_tm->tm_min = 0;
t_tm->tm_sec = 0;
t_tm->tm_mday = t_tm->tm_mday - t_tm->tm_wday + 1;
t_tm->tm_wday = 0;
t = mktime(t_tm);
return t;
}

这段代码展示了如何优化获取一周开始时间戳的函数。原始函数尝试直接设置tm_wday为0,但在某些编译器下可能无效。优化后的实现通过调整tm_mday来找到礼拜一的日期,确保正确返回礼拜一的0点时间戳。
649

被折叠的 条评论
为什么被折叠?



