zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    算法导论图论图的表示 课后题答案
    MFC 如何添加快捷键
    全排序算法permutation分析与总结
    java k++ 和C/C++ k++的区别
    找回失去的快捷方式向导
    解开注册表中U盘禁止拷贝的限制
    锐捷多网卡解决方案 与当前环境冲突(Code 2)
    Delphi中的Access技巧集
    Delphi MessageBox对话框
    另一个博客,不知道好用不
  • 原文地址:https://www.cnblogs.com/tupx/p/3914515.html
Copyright © 2011-2022 走看看