【发布时间】:2013-04-01 02:50:28
【问题描述】:
我有一个显示酒店客人入住数据的查询(START_DATE,END_DATE)。 我想要一个标签来显示自客人上次访问以来相对于今天过去了多少天。因此,例如,如果客人在 2013 年 3 月 29 日离开并且我查看数据,我希望标签告诉我:上次访问“2”天前。
【问题讨论】:
标签: delphi delphi-xe2 delphi-7 delphi-2010 delphi-xe
我有一个显示酒店客人入住数据的查询(START_DATE,END_DATE)。 我想要一个标签来显示自客人上次访问以来相对于今天过去了多少天。因此,例如,如果客人在 2013 年 3 月 29 日离开并且我查看数据,我希望标签告诉我:上次访问“2”天前。
【问题讨论】:
标签: delphi delphi-xe2 delphi-7 delphi-2010 delphi-xe
DaysBetween 也可以在这里使用,就像在您的上一个问题中一样。
Label1.Caption := Format('Last visit %d days ago',
[DaysBetween(Date, Qry.FieldByName('END_Date').AsDateTime)]);
【讨论】:
DaysBetween 版本更快的原因之一是它执行完全不同的计算!
Int 或Trunc。我将Format 与%d 说明符一起使用,它的格式为整数。此外,Format(或FloatToStr)比使用DateBetween 需要更多的开销,并且这里不需要过早优化。 Abelisto,请随时使用高度优化的手写程序集和基准发布您自己的答案,以提供更快的速度(当然是在您自己的博客上)。如果您还没有这样做,那么您就不应该在没有意义的情况下评论效率。
DaysBetween 之类的函数并以性能的名义替换为一些快速的数学计算并不是明智之举。性能优化需要是一个明智的决定,使用良好的分析技术,而不是“仅仅因为”。 (并且需要进行测试;您的快速计算不正确,因为它可能返回负值。)