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;