计算两个日期时间,相差多少分钟
function DateTimeDiff(MaxDateime, MinDateime: string): Integer;
// 计算日期时间差
// 输入格式要求 MaxDateime:='2023-11-30 09:30:00';
var
dt1, dt2: TDateTime; //日期差
t1,t2:TTime; //时间差
s1:string;
i1,i2:Word;
begin
//<日期差
dt1 := StrToDateTime(MaxDateime);
dt2 := StrToDateTime(MinDateime);
Result := Trunc(dt1 - dt2) * 24 * 60 ; // 计算日期差值(天数转换成分钟)
//>
//<时间差
s1:=MaxDateime;
i1:=Pos(' ',s1);
i2:=Length(s1);
if (i1>0) and (i1<i2) then t1:=StrToTime(Copy(s1,i1,i2)) else t1:=StrToTime('0:0');
s1:=MinDateime;
i1:=Pos(' ',s1);
i2:=Length(s1);
if (i1>0) and (i1<i2) then t2:=StrToTime(Copy(s1,i1,i2)) else t2:=StrToTime('0:0');
Result := Result+ MinutesBetween(t1, t2)
//>
end;
procedure TForm1.btn5Click(Sender: TObject);
var
dateTime1, dateTime2, dateTime3: string;
diff1, diff2, diff3: Integer;
t1,t2:TDateTime;
i:integer;
begin
dateTime1 := '2023-11-30 09:30:00';
dateTime2 := '2023-12-01 09:30:00';
dateTime3 := '2023-12-01 09:35:00';
diff1 := DateTimeDiff(dateTime2,dateTime1 );
diff2 := DateTimeDiff(dateTime3,dateTime2);
diff3 := DateTimeDiff(dateTime3,dateTime1);
ShowMessage('A1 - A2 = ' + IntToStr(diff1)); // A1-A2=1440
ShowMessage('A2 - A3 = ' + IntToStr(diff2)); // A2-A3=5
ShowMessage('A1 - A3 = ' + IntToStr(diff3)); // A1-A3=1445
end;
解决不同系统的时间格式冲突问题
program Project1;
uses
SysUtils,
Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
procedure Project_SetDatetime;
begin
//需要添加SysUtils单元
//<初始化本程序默认的时间格式 2023-10-11 HH:NN:SS
// ShortDateFormat := 'yyyy-mm-dd'; //会没了星期几
// LongDateFormat := 'yyyy-mm-dd';
// ShortTimeFormat := 'hh:nn:ss';
// LongTimeFormat := 'hh:nn:ss';
DateSeparator := '-';
TimeSeparator := ':';
//>初始化本程序默认的时间格式 2023-10-11 HH:NN:SS
end;
begin
Project_SetDatetime; //初始化本程序默认的时间格式 2023-10-11 HH:NN:SS
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
时间比较函数
CompareDateTime() //比较两个时间是否相同
CompareDate() //比较两个时间的日期是否相同
CompareTime() //比较两个时间的时分秒是否相同
SameDateTime() //比较两个时间是否相同
SameDate() //比较两个时间的日期部分是否相同
SameTime() //比较两个时间的时分秒是否相同
前3个函数 的返回值是-1,0,1
前者 < 后者 返回 -1
前者 = 后者 返回 0
前者 > 后者 返回 1
后3个函数的返回值是True,False
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils,DateUtils;
var
date1,date2:TDateTime;
r1,r2,r3:Integer;
b1,b2,b3:Boolean;
begin
date1:= StrToDateTime('2019-08-08 10:01:00');
date2:= StrToDateTime('2019-08-08 10:00:00');
r1:=compareDatetime(date1,date2);//1
r2:=CompareDate(date1,date2); //0
r3:=CompareTime(date1,date2); //1
b1:=SameDateTime(date1,date2);//FALSE
b2:=SameDate(date1,date2);//TRUE
b3:=SameTime(date1,date2);//FALSE
date1:= StrToDateTime('2019-08-08 10:01:00');
date2:= StrToDateTime('2019-08-08 10:02:00');
r1:=compareDatetime(date1,date2);//-1
r2:=CompareDate(date1,date2); //0
r3:=CompareTime(date1,date2); //-1
b1:=SameDateTime(date1,date2);//FALSE
b2:=SameDate(date1,date2);//TRUE
b3:=SameTime(date1,date2);//FALSE
date1:= StrToDateTime('2019-09-08 10:01:00');
date2:= StrToDateTime('2019-08-08 10:01:00');
r1:=compareDatetime(date1,date2);//1
r2:=CompareDate(date1,date2); //1
r3:=CompareTime(date1,date2); //0
b1:=SameDateTime(date1,date2);//FALSE
b2:=SameDate(date1,date2);//FALSE
b3:=SameTime(date1,date2);//TRUE
end.