#1024程序员节#活动勋章当日发布原創博客即可获得
授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发
Unix时间戳转北京时间用到“time.h”头攵件,是C语言的标准库使用localtime函数进行转换。
北京时间转Unix时间戳使用mktime函数进行转换。
UTC时间转化成北京时间思路:把UTC时间转换成时间戳,然后时间戳数值加上八小时再把时间戳转化成北京时间。
复制以上代码直接可运行。当然我也上传了文件此文件下载链接:
可以转换到unix时间但是注意的是,它得到的时间比c语言中time()得到的时间大了8*60*60
这是因为Now是当前时区的时间c语言中time()是按格林威治时间计算的,
北京时间比格林威治时间多了8小時
但我进一步研究DateTimeToUnix函数时发现Delphi中的时间没有经过任何的转换,是直接读取系统时间
我试着改变当前计算机时区发现Delphi返回值没有任何改變。
而在C++中改变计算机时区,则time()返回值也随着改变这就说明C++中标准时间是通过本地时间和当前时区进行计算得来的。
因此在Delphi开发时,需要注意Delphi获取的时间戳是当前计算机所在时区时间并非标准UTC时间。
UnixToDateTime()函数并没有对时区进行转换仅仅是对时间进行了转换。