
代码直接上了,当gm时间转本地时间时,在windows下面没有timegm函数,但是可以通过mktime函数减去timezone变量(timezone是C runtime libary的全局变量)来获取
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
bool LocalTimeToUTC(MY_TIME_T *pTime) { struct tm newtime; newtime.tm_year = pTime->u16Year - 1900; newtime.tm_mon = pTime->u8Month - 1; newtime.tm_mday = pTime->u8Day; newtime.tm_hour = pTime->u8Hour; newtime.tm_min = pTime->u8Minute; newtime.tm_sec = pTime->u8Second; newtime.tm_wday = 0; newtime.tm_yday =0; newtime.tm_isdst = 0;
time_t time = mktime(&newtime); struct tm *pnewtime; pnewtime = gmtime(&time);
if(pnewtime != NULL) { pTime->u16Year = pnewtime->tm_year + 1900; pTime->u8Month = pnewtime->tm_mon + 1; pTime->u8Day = pnewtime->tm_mday; pTime->u8Hour = pnewtime->tm_hour; pTime->u8Minute = pnewtime->tm_min; pTime->u8Second = pnewtime->tm_sec; } return true; }
bool UTCTimeToLocal(MY_TIME_T *pTime) { struct tm newtime; newtime.tm_year = pTime->u16Year - 1900; newtime.tm_mon = pTime->u8Month - 1; newtime.tm_mday = pTime->u8Day; newtime.tm_hour = pTime->u8Hour; newtime.tm_min = pTime->u8Minute; newtime.tm_sec = pTime->u8Second; newtime.tm_wday = 0; newtime.tm_yday = 0; newtime.tm_isdst = 0;
time_t time = mktime(&newtime) - timezone; struct tm *pnewtime; pnewtime = localtime(&time); if (pnewtime != NULL) { pTime->u16Year = pnewtime->tm_year + 1900; pTime->u8Month = pnewtime->tm_mon + 1; pTime->u8Day = pnewtime->tm_mday; pTime->u8Hour = pnewtime->tm_hour; pTime->u8Minute = pnewtime->tm_min; pTime->u8Second = pnewtime->tm_sec; } return true; }
|
近期评论