首页 > 代码库 > UTC 转 LocalTime
UTC 转 LocalTime
/*使用unsigned const char*纯碎是为了配合项目,改成char*会比较通用些*/BOOL CDllSuiteEngine::Time_StrToType(unsigned const char* lpszValue, SYSTEMTIME &time){ if (!lpszValue) { return FALSE; } int nYear = 0; int nMonth = 0; int nDay = 0; int nHour = 0; int nSecond = 0; int nMinute = 0; int nMilliSecond = 0; CString str = lpszValue; sscanf(str, _T("%d-%d-%dT%d:%d:%d.%dZ"), &nYear, &nMonth, &nDay, &nHour, &nMinute, &nSecond,&nMilliSecond); // if (nMonth==0 || nDay==0) // { // _stscanf(str, _T("%d/%d/%d %d:%d:%d"), &nYear, &nMonth, &nDay, &nHour, &nMinute, &nSecond); // } time.wYear = nYear; time.wMonth = nMonth; time.wDay = nDay; time.wHour = nHour; time.wSecond = nSecond; time.wMinute = nMinute; time.wMilliseconds = nMilliSecond;//MUST be set, or all member of converted local time is 52428 return TRUE;}void CDllSuiteEngine::Time_UTCToLocal(SYSTEMTIME& tUTC, SYSTEMTIME& tLocal){ //e.g. "2013-06-23T19:10:57.000Z"; TIME_ZONE_INFORMATION timeZomeInfo; ::GetTimeZoneInformation(&timeZomeInfo); ::SystemTimeToTzSpecificLocalTime(&timeZomeInfo, &tUTC, &tLocal); //Careful: member MilliSeconds must be set.}void CDllSuiteEngine::Time_TypeToStr(SYSTEMTIME tType,CString& szTime){ szTime.Empty(); szTime.Format(_T("%04d-%02d-%02d %02d:%02d:%02d"), tType.wYear, tType.wMonth, tType.wDay, tType.wHour, tType.wMinute, tType.wSecond);}void CDllSuiteEngine::Time_UTCStrToLocalStr(unsigned const char* szUTC,CString& cLocal){ cLocal.Empty(); if(!szUTC) return; SYSTEMTIME tUTC; SYSTEMTIME tLocal; if(Time_StrToType(szUTC, tUTC)) { Time_UTCToLocal(tUTC, tLocal); Time_TypeToStr(tLocal, cLocal); }}void main(){ CString cLocalTime; Time_UTCStrToLocalStr("2013-06-23T19:10:57.000Z",cLocalTime); //output..}
北京 UTC+8
Hawaii UTC-10
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。