这里获取时区可以使用函数 GetTimeZoneInformation
//获取当前系统的时区
TIME_ZONE_INFORMATION tm;
GetTimeZoneInformation(&tm);
m_TimeZone = tm.Bias/(-60);
关于不同时区 对数据操作
例如我在东八区,需要将时间转换为UTC的格式
那么对应的就需要减去8小时,那么对应的问题就有 多8个小时,超过一天,超过一个月,超过一年 该怎么处理(同理 少8个小时,就会逐个有个“进制”的转换)
涉及到的一个类(VC中的COleDateTimeSpan类)
这里给出使用场景
int TimeZone = g_pConsole->m_TimeZone;
if (!g_pConsole->m_strApiVersion.empty())
{
COleDateTime odt1,odt2;
odt1.ParseDateTime(strDateTime1);
odt2.ParseDateTime(strDateTime2);
COleDateTimeSpan odts1;
odts1.SetDateTimeSpan(0,TimeZone,0,0);
odt1 -= odts1;
odt2 -= odts1;
strDateTime1 = odt1.Format(_T("%Y-%m-%d %H:%M:%S"));
strDateTime2 = odt2.Format(_T("%Y-%m-%d %H:%M:%S"));
}
功能说明:
国内的是 东八区 那么得到的结果TimeZone就是8 这里转换成 UTC时区 那么就相差8个小时
也就是 2020-4-23 18:00:00 转换后 2020-4-23 10:00:00