【问题标题】:How to compare two dates of dd/mm/yyyy format?如何比较 dd/mm/yyyy 格式的两个日期?
【发布时间】:2019-09-19 22:39:51
【问题描述】:

我有两个文件,想比较你的编译日期以备将来更新。

假设新文件的日期为:20/09/2019,旧文件的日期为:19/09/2019。如何比较这两个相同格式的日期(dd/mm/yyyy)?

var
 UpDate, OldDate: string;
begin
  UpDate := '20/09/2019';
  OldDate := DateToStr(FileDateToDateTime(FileAge(IncludeTrailingBackslash(ExtractFilePath(Application.ExeName)) + 'test.exe'))) // 19/09/2019

  if UpDate > OldDate then
  begin
    // Do something
  end;
end;

【问题讨论】:

  • 比较日期,而不是字符串。

标签: date delphi delphi-10.3-rio


【解决方案1】:

您可以通过调用DateUtils.CompareDate() 直接处理TDateTime 值,而不是操作字符串。

var  OldDate, UpDate : TDateTime;
begin
  OldDate := EncodeDate(2019, 9, 20);
  UpDate := FileDateToDateTime(FileAge(IncludeTrailingBackslash(ExtractFilePath(Application.ExeName)) + 'test.exe'));
  if CompareDate(OldDate, UpDate) = LessThanValue  Then
  begin
    // Do something
  end;
end;

【讨论】:

  • 无论出于何种原因,结果实际上是TValueRelationship,但有效结果是相同的。链接到官方documentation会透露这些细节。
  • @Amessihel,E2003 未声明的标识符:'DateTime' on:OldDate := Datetime.Create(2019, 9, 20);
  • 那个创建应该是TDateTime.Create(...);
  • @PatHeuvel,“TDateTime”不包含名为“Create”的成员
  • 请注意,不推荐使用FileDateToDateTime(FileAge(...)),而是使用输出TDateTimeFileAge() 的重载版本:if FileAge(FileName, UpDate) then ...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-02
  • 1970-01-01
  • 1970-01-01
  • 2010-09-22
  • 2014-09-22
  • 1970-01-01
相关资源
最近更新 更多