今天看代码的时候看到这么一段
void user::setHelpday() { int time = ::getTickCount(); m_helpday = (time +(8 * 3600))/(3600 * 24); }
大致是保存一下当前是第几天,用于区分不同天,但是对立面的+8*3600不太理解
time_t cur = 0;
struct tm *timeinfo = localtime(&cur);
printf("%d,%d
",timeinfo->tm_hour,timeinfo->tm_yday);
打印出来是 8,0
全世界在同一时间的time(0)返回的时间戳是一致的,都是
是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。
UNIX时间戳的0按照ISO 8601规范为 :1970-01-01T00:00:00Z.
但是同一个时间戳在不同时区所对应的当地小时是不一样的。!就像时间戳0在中国就是8点
回到上面那个问题,
时区差东为正,西为负。在此,把东八区时区差记为 +0800,
UTC + (+0800) = 本地(北京)时间 (1)
所以要计算是第几天必须把时间戳+8*3600 再除24*3600才是对的。