【问题标题】:Nesbot Carbon difference: How to round to the nearest monthNesbot Carbon 差异:如何四舍五入到最近的月份
【发布时间】:2018-04-19 18:14:00
【问题描述】:

我有一对日期(开始和结束):

示例 1: 开始日期:2018-01-01 结束日期:2018-06-30

示例 2: 开始日期:2017-06-07 结束日期:2017-12-31

当我应用以下内容时

return $this->end_date->diffForHumans($this->start_date,true); 

对于示例 1,我得到以下结果: “5 个月

然后,当我应用以下内容时

return $this->end_date->diffForHumans($this->start_date,true);

对于示例 2,我得到以下结果: “6 个月

如何设置碳或在第一个示例中显示“6 个月”,我的意思是,将其四舍五入到最接近的月份数? 因为在第一个例子中,超过了 5 个半月,所以对我来说,结果最好是“6 个月”,甚至更好的是“5 个月半”。

我已经尝试了docs 中解释的所有参数,但没有运气。

【问题讨论】:

  • 第一个例子其实是整整6个月。你要从 1 月 1 日到 6 月 30 日。我不确定您为什么认为将其显示为 5 个半月 会更好。如果有的话,应该显示为 6 个月
  • 我同意。那我怎样才能使它结果为 6 个月(最近的月份数)?
  • 你考虑过diffInMonths()方法吗?
  • 是的,我已经考虑过并尝试过,得到了相同的结果。
  • 我认为你无法单独使用Carbon 来完成它。相反,我认为你需要一个自定义函数。如果您使用$end->diff($start),那么您可以获得天数的差异。将其除以一个月的平均 30.41 天,并取上限值,您可以四舍五入到最接近的月份。

标签: php datetime php-carbon


【解决方案1】:

从 2.27 版开始支持舍入。它尚未记录在案,但您可以这样做:

return $this->end_date->diffForHumans($this->start_date, ['parts' => 1, 'options' => CarbonInterface::ROUND]);

您可以在this Github issue 上阅读更多内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 2019-02-09
    • 2020-04-24
    • 2012-04-22
    相关资源
    最近更新 更多