【问题标题】:How to count number of weekends in a given month (Carbon Object)?如何计算给定月份的周末数(碳对象)?
【发布时间】:2015-01-05 03:50:09
【问题描述】:

我正在尝试计算给定月份中有多少个周末(周六和周日)。这将允许我减去这些周末来获得我的申请所需的实际工作日数。

我现在正在做的是,首先我创建了这样的 Carbon 对象:

$thisDate = Carbon::createFromDate(2014, 12, 2);

然后,我在这样的 Carbon 对象的帮助下计算了一个月中落在上述日期的天数

$daysInMonth = $thisDate->daysInMonth;

现在,我得到了一个月的天数。可以通过循环该月的每一天并检查它是否是周末(例如 CarbonObject->isWeekday)并增加计数器来找到周末的数量,但它看起来很混乱。

有没有更优雅的方法来做到这一点?我的意思是 CarbonObject 中是否有我遗漏的更好的东西,它可以以更简单的方式给出结果?

注意:我在 Laravel4.2 的帮助下创建我的应用程序

我也读过这个:(但想知道是否有碳路解决方案) Get number of weekdays in a given month

【问题讨论】:

    标签: datetime laravel-4


    【解决方案1】:

    您可以使用diffInDaysFiltered() 方法使用isWeekend() 方法过滤天数,这将返回您想要的结果。

    $dt = Carbon::create(2014, 1, 1);
    $dt2 = Carbon::create(2014, 12, 31);
    $daysForExtraCoding = $dt->diffInDaysFiltered(function(Carbon $date) {
        return $date->isWeekend();
    }, $dt2);
    
    echo $daysForExtraCoding;
    

    【讨论】:

    • 您好,欢迎来到 Stack Overflow。除非他们解释了他们的工作,否则只有代码的答案通常不是很有用。这对于长代码段来说是非常正确的。请考虑添加对您更改或编写的内容的解释。
    • 我认为这里不需要解释,因为这是 3 行代码。 1,2行正在创建日期对象,第三行过滤日期。
    • 嗨,Max,感谢您的回答。我同意@JasonMArcher,总是值得用你的代码来解释。最好假设正在阅读您的答案的人不熟悉该主题领域,并且有几个 cmet 可以帮助您解决问题。
    【解决方案2】:

    我有其他解决方案

    $dt = Carbon::create(2014, 12, 31); // day end of month
    $numberOfWeeks = $dt->weekOfMonth;
    

    【讨论】:

      猜你喜欢
      • 2012-07-12
      • 1970-01-01
      • 2022-01-10
      • 2018-12-15
      • 2011-04-08
      • 2017-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多