AI摘要

本文介绍了在Delphi中获取Unix时间戳的方法,以及需要注意的事项。Delphi中使用DateTimeToUnix(Now)函数可以获取Unix时间戳,但与C语言中time()函数得到的时间相比,Delphi得到的时间戳要大8小时,因为Delphi获取的是当前时区的时间,而C语言中time()函数是按格林威治时间计算的。Delphi中的时间戳没有经过任何转换,直接读取系统时间。因此,在Delphi开发时,需要注意获取的时间戳是当前计算机所在时区时间,并非标准UTC时间。UnixToDateTime()函数没有对时区进行转换,只是对时间进行了转换。

uses DateUtils;
DateTimeToUnix(Now)

可以转换到unix时间,但是注意的是,它得到的时间比C语言中time()得到的时间大了86060,这是因为Now是当前时区的时间,c语言中time()是按格林威治时间计算的,北京时间比格林威治时间多了8小时,DateTimeToUnix(Now)-86060 就和c语言中time()得到的一样了。

但我进一步研究DateTimeToUnix函数时发现,Delphi中的时间没有经过任何的转换,是直接读取系统时间

我试着改变当前计算机时区,发现Delphi返回值没有任何改变。

而在C++中,改变计算机时区,则time()返回值也随着改变,这就说明C++中标准时间是通过本地时间和当前时区进行计算得来的。

因此,在Delphi开发时,需要注意Delphi获取的时间戳是当前计算机所在时区时间,并非标准UTC时间。

UnixToDateTime()函数并没有对时区进行转换,仅仅是对时间进行了转换。

文章来源:http://blog.csdn.net/missmecn/article/details/5870639



最后修改:2017 年 08 月 23 日
点赞的人是最酷的