get_week
unknown
plain_text
a year ago
1.7 kB
1
Indexable
Never
public function get_week($date){ // public const SUNDAY = 0; // public const MONDAY = 1; // public const TUESDAY = 2; // public const WEDNESDAY = 3; // public const THURSDAY = 4; // public const FRIDAY = 5; // public const SATURDAY = 6; $weekday=Carbon::parse($date)->weekday(); $week_value=[ Carbon::SUNDAY=>1, Carbon::MONDAY => 2, Carbon::TUESDAY => 3, Carbon::WEDNESDAY => 4, Carbon::THURSDAY => 5, Carbon::FRIDAY => 6, Carbon::SATURDAY => 0, ]; var_dump('weekday='.$weekday); $startOfWeek=Carbon::parse($date)->subDays($week_value[$weekday]); $startOfWeekY=Carbon::parse($date)->subDays($week_value[$weekday])->startOfYear(); $endOfWeek=Carbon::parse($date)->addDays(6-$week_value[$weekday]); $endOfWeekY=Carbon::parse($date)->addDays(6-$week_value[$weekday])->startOfYear(); $new_date=Carbon::parse($date)->addDays(6-$week_value[$weekday]); $days1=$startOfWeekY->startOfYear()->diffInDays(Carbon::parse($new_date)); $days2=$endOfWeekY->startOfYear()->diffInDays(Carbon::parse($new_date)); $week1=(int)round(($days1/7),0); $week2=(int)round(($days2/7),0); if($week1>$week2){ if($week1==53 && ($days1-365)>=4)$week=1; else $week=$week1; } else if($week2>$week1){ if($week2==53 && ($days2-365)>=4)$week=1; else $week=$week2; } else $week=$week1; return['week'=>$week,'startOfWeek'=>$startOfWeek,'endOfWeek'=>$endOfWeek]; }