Delphi 时间的比较

计算两个日期时间,相差多少分钟


   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.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值