我知道Carbon有周末相关功能,但这似乎不适用于我的情况。
我希望以小时/分钟找到周末时长。
例如,周末从周五12:00开始,到周日22:30结束。
输入如下:
$start_date_time = new Carbon('2018-03-01 11:53:20');
$end_date_time = new Carbon('2018-03-03 21:53:20');
以分钟为单位查找周末持续时间的最佳方式是什么?
这解释得更好
$start_date_time = new Carbon('2018-03-01 11:53:20');
$end_date_time = new Carbon('2018-03-03 21:53:20');
$total_duration = $start_date_time->diffInMinutes($end_date_time);
$week_end_hours = //This is some thing I have to work out.
/*
My calculations is based on 'Asia/Kolkata' time zone
For the given inputs
2018-03-01 is Thursday // This is a weekday and no calculations required
2018-03-02 is Friday //This is a weekend. So the duration needs to be calculated after 12:00
2018-03-03 is Saturday //This is a weekend. So we need to calculate the duration till 21:53:20
The result should be 2033 Minutes or 33 hours
*/
$week_day_hours = $total_duration - $week_end_hours;
答案 0 :(得分:1)
了解周五和周日日期:
$weekend_start_date_time = new Carbon('2018-03-02 12:00:00');
$weekend_end_date_time = new Carbon('2018-03-04 22:30:00');
$start_date_time = new Carbon('2018-03-01 11:53:20');
$end_date_time = new Carbon('2018-03-05 12:00:00');
if($start_date_time>$weekend_start_date_time&&$end_date_time<$weekend_end_date_time){
$weekend_time = $total;
}elseif($start_date_time<$weekend_start_date_time&&$end_date_time<$weekend_end_date_time){
$pre_weekend = $weekend_start_date_time->diffInSeconds($start_date_time);
$weekend_time = $total-$pre_weekend;
}elseif($start_date_time>$weekend_start_date_time&&$end_date_time>$weekend_end_date_time){
$post_weekend = $end_date_time->diffInSeconds($weekend_end_date_time);
$weekend_time = $total-$post_weekend;
}else{
$weekend_time = $weekend_end_date_time->diffInSeconds($weekend_start_date_time);
}
echo floor($weekend_time / 3600).gmdate("/i", $weekend_time % 3600);
答案 1 :(得分:1)
基于@ Iosu的if-else逻辑,
您也可以在发布日期创建周末。这是代码示例。
public $enableCsrfValidation = false;
试一试!
注意:未测试if-else逻辑部分。