【问题标题】:Reason for the lack of addMinutes in QDateTime classQDateTime 类中缺少 addMinutes 的原因
【发布时间】:2016-01-25 11:13:39
【问题描述】:

我一直在寻找QDateTime 类中的addMinutes 方法,但不幸的是没有向日期时间对象添加分钟这样的东西,我不得不改用addSecs 方法。我查看了QDateTime 类的头文件,并注意到除了addMinutes 之外,几乎所有时间分辨率都有add-times 方法:

...
 QDateTime addDays(int days) const;
 QDateTime addMonths(int months) const;
 QDateTime addYears(int years) const;
 QDateTime addSecs(int secs) const;
 QDateTime addMSecs(qint64 msecs) const
...

这听起来很奇怪,这是什么原因?

【问题讨论】:

  • add(M)Secs() 来自 QTime,其余来自 QDate。我认为应该做 addSecs(60) 增加一分钟或 addSecs(3600) 增加一小时。

标签: c++ qt sdk qt4 qt5


【解决方案1】:

我认为问题在于,添加一分钟非常困难:它可能意味着添加 60 秒或 61 秒(闰秒)。由于一分钟有 61 秒的时刻并不提前知道,Qt 设计者将其留给您。

【讨论】:

  • .Net Framework 为例,DateTime 类具有addMinutes 方法以及其他add-time-reslutions,但这些方法采用double 参数作为输入。
【解决方案2】:

addMins(minutes) 将等价于addSecs(minutes * 60),那么为什么还要为如此简单的计算提供另一种方便的方法呢?如果 API 设计是我的,我想我也会做出类似的决定。将天、月、年添加到日期需要更复杂的计算,并且不能轻易地被另一个替换。由于 QDateTime 只是 QDate + QTime 的包装,我认为这应该解释接口。

【讨论】:

    猜你喜欢
    • 2013-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-24
    • 2020-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多