Files
water_new/modules/User/Facades/Calendar.php
2023-03-08 09:16:04 +08:00

109 lines
2.7 KiB
PHP

<?php
namespace Modules\User\Facades;
use Carbon\Carbon;
use Carbon\CarbonPeriod;
use Modules\User\Models\User;
class Calendar
{
/**
* Notes : 获取日历展示图,设置每周开始为周日
*
* @Date : 2022/1/21 10:23
* @Author : Mr.wang
* @param string $date
* @return array
*/
public static function show(string $date = ''): array
{
$start = Carbon::parse($date)->startOfMonth()->startOfWeek(0)->toDateString();
$end = Carbon::parse($date)->endOfMonth()->endOfWeek(6)->toDateString();
$data = self::getBetweenDate($start, $end);
$calendar = Carbon::parse($date);
$days = $data->map(function ($today) use ($calendar) {
return [
'today' => $today->toDateString(),
'day' => (int) $today->format('j'),
'isPast' => $today->isPast(),//是否为之前的日期
'isMonth' => $today->isSameMonth($calendar),//当前月
];
});
return [
'start' => $start,
'end' => $end,
'calendar' => $days
];
}
/**
* Notes: 返回日期区间
*
* @Author: 玄尘
* @Date: 2022/2/8 16:52
* @param string $start_at 开始日期
* @param string $end_at 结束日期
*/
public static function getBetweenDate(string $start_at, string $end_at)
{
return collect(CarbonPeriod::create($start_at, $end_at));
}
/**
* Notes: 获取日期 某一天的前一天后一天
*
* @Author: 玄尘
* @Date: 2022/1/21 11:03
* @param string $today
* @param string $type
* @return string
*/
public static function day(string $today = '', string $type = ''): string
{
$variate = ['before' => -1, 'after' => 1, '' => 0][$type];
return Carbon::parse($today)->addDays($variate)->toDateString();
}
/**
* Notes: 获取日期 某一天的前一天后一天
*
* @Author: 玄尘
* @Date: 2022/1/21 11:03
* @param string $month
* @param string $type
* @return string
*/
public static function getFirstDayByMonth(string $month = '', string $type = ''): string
{
$month = Carbon::parse($month);
if ($type == 'before') {
$month = $month->subMonth();
}
if ($type == 'after') {
$month = $month->addMonth();
}
return $month->startOfMonth()->toDateString();
}
/**
* Notes: 获取年份
*
* @Author: 玄尘
* @Date: 2022/8/10 9:30
* @param $start
*/
public static function getYears($startYear)
{
$years = CarbonPeriod::years($startYear);
return $years;
}
}