• TDateTime转UTC的时间差


    需求:返回用分钟表示的主计算机上的时间和全球标准时间 (UTC) 之间的时间差,如:2010-01-10 09:07:54,与UTC之间的时间差应为:1263085674.

    调用方法:

        getTimezoneOffset(StrToDateTime('2010-01-10 09:07:54'));

    实现代码:

    //功能:获取本机时间区

    function getTimeZone:integer;
    var
      m_timezone:TIME_ZONE_INFORMATION;
      i:integer;
      dTimezone:double;
      iTimezone:integer;
    begin
      GetTimeZoneInformation(m_timezone);
      i := m_timezone.Bias;
      dTimezone := -1 * (i / 60);
      iTimezone := Trunc(dTimezone);
      Result := iTimezone;
    end;

    //功能:返回用分钟表示的主计算机上的时间和全球标准时间 (UTC) 之间的时间差,

    function getTimezoneOffset(ADateTime:TDateTime):extended;
    var
      x,y : extended;
      iYear,iMonth,iDay : word;
      iHour,iMin,iSec,iMSec : word;
      iTimeZone : integer;
    begin
      iTimeZone := getTimeZone;
      DecodeDateTime(ADateTime,iYear,iMonth,iDay,iHour,iMin,iSec,iMSec);
      x := (EncodeDate(iYear,iMonth,iDay) - EncodeDate(1970,1,1)) * 86400;
      y := iHour * 3600 + iMin * 60 + iSec;
      x := x + y - (iTimeZone * 3600);
      Result := x;
    end;

    //功能:将UTC时间值转为成当前系统时间
    function UTCTime2String(uiTime:Cardinal):string;
    var
      sDateTime : TDateTime;
      iTimeZone : integer;
    begin
      iTimeZone := getTimeZone;
      sDateTime := EncodeDate(1970,1,1) + ((uiTime + iTimeZone * 3600) / 86400);
      Result := FormatDateTime('yyyy-mm-dd hh:mm:ss',sDateTime);
    end;

  • 相关阅读:
    MFC对话框编程详细学习笔记
    VS2013 MFC基于对话框编程
    Java学到什么程度可以找到第一份工作
    搞定操作系统面试,看这篇就够了
    搞定计算机网络面试,看这篇就够了
    一千行 MySQL 学习笔记
    后端工程师技术面试复习大纲
    爬虫功能
    昨天的一卦,真的太形象,可惜我就是不敢断
    基于maven+ssm的增删改查之批量删除
  • 原文地址:https://www.cnblogs.com/MaxWoods/p/2886448.html
Copyright © 2020-2023  润新知