记录一个bug 将本地时间转换为UTC时间

这里获取时区可以使用函数 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

 

おすすめ

転載: blog.csdn.net/Wuzm_/article/details/105704334