应用场景
经常会用到的时间戳转换,特别是在网页数据中,有在线网址工具转换/tools/unixtime.aspx
但我们必须要再自己的程序里面实现,这里有个时区问题,默认按格林威治时间计算的,如果按北京时间来算会比格林威治时间多了8小时。
函数代码
//DateTime==>>UnixDatefunction DateTimeToUnixDate(const ADate: TDateTime): Longint;constcUnixStartDate: TDateTime = 25569.0; // 1970/01/01beginResult := Round((ADate - cUnixStartDate) * 86400);end;//UnixDate==>>DateTimefunction UnixDateToDateTime(const USec: Longint): TDateTime;constcUnixStartDate: TDateTime = 25569.0; // 1970/01/01beginResult := (Usec / 86400) + cUnixStartDate;end;//等价函数function DateTimeToUnixDate( d: TDateTime ): Int64;vardJavaStart: TDateTime;begin//时间是从1970年1月1日0点到当前的间隔dJavaStart := EncodeDateTime( 1970, 1, 1, 0, 0, 0, 0 );Result := MilliSecondsBetween( d, dJavaStart );end;//曾遇到过按北京时间算时间戳的function DateTimeToUnixDate( d: TDateTime ): Int64;vardJavaStart: TDateTime;begindJavaStart := EncodeDateTime( 1970, 1, 1, 8, 0, 0, 0 );Result := MilliSecondsBetween( d, dJavaStart );end;