📄 labradtimestamps.pas
字号:
{ Copyright (C) 2007 Markus Ansmann
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. }
{
TODO:
- Check ToDateTime for negative values
- Document
}
unit LabRADTimeStamps;
interface
type
TLabRADTimeStamp = packed record
high: int64;
lo: cardinal;
hi: cardinal;
end;
function LabRADDateTimeToTimeStamp(Value: TDateTime): TLabRADTimeStamp;
function LabRADTimeStampToDateTime(Value: TLabRADTimeStamp): TDateTime;
function LabRADTimeStampToString(Value: TLabRADTimeStamp): string;
implementation
uses SysUtils, Windows;
var UTCOffset: Integer;
function LabRADDateTimeToTimeStamp(Value: TDateTime): TLabRADTimeStamp;
begin
try
if Value<0 then Value:=trunc(Value)+abs(frac(Value));
Value:=(Value-1462)*3600*24+UTCOffset;
Result.High:=trunc(Value);
Value:=(Value-Result.High)*4294967296.0;
Result.hi:=trunc(Value);
Value:=(Value-Result.hi)*4294967296.0;
Result.lo:=trunc(Value);
except
Result.High:=0;
Result.lo:=0;
Result.hi:=0;
end;
end;
function LabRADTimeStampToDateTime(Value: TLabRADTimeStamp): TDateTime;
begin
Result:=1462+(Value.High+Value.hi/4294967296.0+Value.lo/18446744073709551616.0-UTCOffset)/3600/24;
end;
function LabRADTimeStampToString(Value: TLabRADTimeStamp): string;
var T: TDateTime;
begin
T:=1462+(Value.High+Value.hi/4294967296.0+Value.lo/18446744073709551616.0-UTCOffset)/3600/24;
Result:=formatdatetime('mm/dd/yyyy hh:mm:ss.zzz', T);
end;
var T: TTimeZoneInformation;
begin
GetTimeZoneInformation(T);
UTCOffset:=(T.Bias+T.DaylightBias)*60;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -