在写关于时间的代码时,经常会需要我们去获得时区,取得时区的函数:
TIME_ZONE_INFORMATION info;
GetTimeZoneInformation(&info);
LONG smt = info.StandardBias - info.Bias;//返回的是分钟数
time_t spt = smt * 60;//转化为秒
简单的计算过了几天:
#define ONE_MINUTE_SEC 60
#define ONE_HOUR_SEC (60*ONE_MINUTE_SEC)
#define ONE_DAY_SEC (24*ONE_HOUR_SEC)
time_t GetGMTBias()
{
TIME_ZONE_INFORMATION info;
GetTimeZoneInformation(&info);
time_t spt = (info.StandardBias - info.Bias)*ONE_MINUTE_SEC;
return spt;
}
int PassDayEasy(const time_t& lTime, const time_t& rTime)
{
//需要先判断一下时区
//并做相应的时区计算
time_t spt = GetGMTBias();
time_t lt = (lTime+spt)/ONE_DAY_SEC;
time_t rt = (rTime+spt)/ONE_DAY_SEC;
return ( lt-rt );
}
是否是同一天
bool IsSameDay( const time_t& lTime, const time_t& rTime )
{
return (PassDayEasy(lTime,rTime) == 0);
}
是否是同一周
#define ONE_WEEK_SEC (7*ONE_DAY_SEC)
bool IsSameWeek( const time_t& lTime, const time_t& rTime )
{
//需要先判断一下时区
//并做相应的时区计算
time_t spt = GetGMTBias();
time_t lt = (lTime+spt);
time_t rt = (rTime+spt);
//1970-01-01是星期四,回溯4天到星期天进行对比
lt = ((lt-4*ONE_DAY_SEC)/ONE_WEEK_SEC);
rt = ((rt-4*DAY_SEC)/ONE_WEEK_SEC);
return ( lt == rt );
}