【问题标题】:cxDateEdit set timecxDateEdit 设置时间
【发布时间】:2013-04-14 22:03:43
【问题描述】:

如何强制 cxDateEdit 将时间重置为 00:00:00 ?实际上我不需要时间并且只将其属性更改为日期,但不知何故时间仍然包含在结果中。不可见,但足以使我的查询结果出错。我必须将时间重置为 00。

【问题讨论】:

  • 只要Trunc(cxDateEdit1.DateTime)。这种行为是意料之中的。

标签: delphi devexpress delphi-xe2 delphi-xe


【解决方案1】:

DateUtils.DateOf 仅返回日期时间变量的日期部分。

// QueryDate is a TDateTime variable
QueryDate := DateUtils.DateOf(cxDateEdit1.DateTime);
YourQuery.ParamByName('TheDate').AsDateTime := QueryDate;

对于使用没有DateUtils 单元的旧版Delphi 的未来读者,您可以使用Trunc 完成同样的事情。 (如果你有DateUtils,如果你改用DateOf,你在做什么会更清楚。)

QueryDate := Trunc(cxDateEdit1.DateTime);

【讨论】:

  • 那比Trunc()好多少?
  • @Warren,上次我在这里发布Trunc 而不是推荐RecodeTime 我得到了否定的cmets 和几个downvotes。我在这里涵盖了两个基础。 :-) 我个人使用Trunc,因为它打字少,而且我知道它的作用。
  • 我更喜欢Trunc(),因为它的作用显而易见。截断浮点数。这反过来又记录了读者需要知道的事实。 DayOf 是一个谜。
  • @Warren 不,我的意思是 DateOf。愚蠢的错字。是的,Trunc 确实截断了一个浮点数。但这与日期的关系是一个谜。使用 Trunc 处理日期是一个可怕的实现细节泄漏。
  • 我想我认为 TDateTime 将始终是一个浮点数,忽略这一事实会导致各种假设,这很可怕。
【解决方案2】:

Properties 中有一个 SaveTime 属性,您可以将其设置为 False。这将只存储日期。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 2013-01-21
    • 2012-07-28
    • 2023-01-12
    • 2017-06-28
    • 2012-04-05
    相关资源
    最近更新 更多