Delphi中獲取Unix時間戳(秒、毫秒)

按秒轉換:

uses DateUtils;
DateTimeToUnix(Now)

能夠轉換到unix時間,可是,它獲得的時間比c語言中time()獲得的時間大了86060
這是由於Now是當前時區的時間,
c語言中time()是按格林威治時間計算的,
北京時間比格林威治時間多了8小時
DateTimeToUnix(Now)-86060 就和c語言中time()獲得的同樣了。ide

Delphi中的DateTimeToUnix時間函數沒有通過任何的轉換,是直接讀取系統時間函數

就算改變當前計算機時區,發現Delphi返回值沒有任何改變。unix

在C++中,改變計算機時區,則time()返回值也隨着改變,這就說明C++中標準時間是經過本地時間和當前時區進行計算得來的。code

在Delphi開發時,須要注意Delphi獲取的時間戳是當前計算機所在時區時間,並不是標準UTC時間。開發

UnixToDateTime()函數並無對時區進行轉換,僅僅是對時間進行了轉換。it

按毫秒轉換

function DateTimeToMilliseconds(const ADateTime: TDateTime): Int64; //得到毫秒
var
LTimeStamp: TTimeStamp;
begin
LTimeStamp := DateTimeToTimeStamp(ADateTime);
Result := LTimeStamp.Date;
Result := (Result * MSecsPerDay) + LTimeStamp.Time;
end;
相關文章
相關標籤/搜索