获取当前时区的函数

       在写关于时间的代码时,经常会需要我们去获得时区,取得时区的函数:

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 );
}


 



 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值