• 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

  • 相关阅读:
    结构体数组
    怎样在Linux下通过ldapsearch查询活动文件夹的内容
    Phalcon之 表单(Forms)
    Java模式(适配器模式)
    人类智商一般在多少左右?爱因斯坦的智商是多少?
    SQL中declare申明变量
    apache2.2 虚拟主机配置
    项目实施阶段该做好哪些方面的工作
    HTML精确定位:scrollLeft,scrollWidth,clientWidth,offsetWidth之全然具体解释
    ExtJs自学教程(1):一切从API開始
  • 原文地址:https://www.cnblogs.com/tupx/p/3914515.html
Copyright © 2020-2023  润新知