如何计算给定月份的周末数(碳对象)?

时间:2015-01-05 03:50:09

标签: datetime laravel-4

我想计算一个月内有多少个周末(周六和周日)。这将允许我减去这些周末以获得我的申请中所需的实际工作日数。

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

  

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

然后,我在这样的Carbon对象的帮助下计算了一个月内的天数,这是

  

$ daysInMonth = $ thisDate-> daysInMonth;

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

有更优雅的方法吗?我的意思是我在缺少哪些更好的CarbonObject,这可以更容易地给出结果?

注意:我在Laravel4.2

的帮助下创建我的应用程序

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

2 个答案:

答案 0 :(得分:3)

您可以使用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;

答案 1 :(得分:0)

我有其他解决方案

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