【问题标题】:Display how many days since last visit显示自上次访问以来的天数
【发布时间】:2013-04-01 02:50:28
【问题描述】:

我有一个显示酒店客人入住数据的查询(START_DATE,END_DATE)。 我想要一个标签来显示自客人上次访问以来相对于今天过去了多少天。因此,例如,如果客人在 2013 年 3 月 29 日离开并且我查看数据,我希望标签告诉我:上次访问“2”天前。

【问题讨论】:

    标签: delphi delphi-xe2 delphi-7 delphi-2010 delphi-xe


    【解决方案1】:

    DaysBetween 也可以在这里使用,就像在您的上一个问题中一样。

    Label1.Caption := Format('Last visit %d days ago', 
                        [DaysBetween(Date, Qry.FieldByName('END_Date').AsDateTime)]);
    

    【讨论】:

    • @Abelisto 快两倍?!所以呢。为什么要牺牲可读性和表达性?还是你真的相信这个函数调用是性能瓶颈?
    • @Abelisto 您的宣言导致难以维护的程序更容易出现缺陷。不要只是愉快地内联编写低级代码。只做性能。当您计时并知道它会产生真正的影响时会发生变化。如果您必须这样做,请编写您自己的 DaysBetween 函数并将其内联。使代码可读且快速。在这样的评论中建议这些事情是危险和不负责任的。我再说一遍,这里有一个数据库查询。你连这涉及多少个时钟都不知道吗?
    • @Abelisto 无论如何,您的DaysBetween 版本更快的原因之一是它执行完全不同的计算!
    • 这两个值都不需要IntTrunc。我将Format%d 说明符一起使用,它的格式为整数。此外,Format(或FloatToStr)比使用DateBetween 需要更多的开销,并且这里不需要过早优化。 Abelisto,请随时使用高度优化的手写程序集和基准发布您自己的答案,以提供更快的速度(当然是在您自己的博客上)。如果您还没有这样做,那么您就不应该在没有意义的情况下评论效率。
    • @Abelisto - 优秀的开发人员关心性能,但他们也知道何时需要担心这些事情。优化 DaysBetween 之类的函数并以性能的名义替换为一些快速的数学计算并不是明智之举。性能优化需要是一个明智的决定,使用良好的分析技术,而不是“仅仅因为”。 (并且需要进行测试;您的快速计算不正确,因为它可能返回负值。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-23
    • 2012-07-02
    • 1970-01-01
    • 2020-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多