原创PHP获取相关周的时间函数

PHP 689 0 2023-07-06

PHP获取相关周的时间函数

以下实现两种功能:

1、根据年份和同数获取周的起止日期;

2、根据日期获取年份、月份、天、星期几、本月天数、本年天数、本年第几周及起止日期。

代码如下:

//调用实例
public function ts(){
        dump($this->getWeekDate(2023,27));
        dump($this->getDateInfo('2023-07-06'));
    }

    //根据年份和周数获取日期范围,返回周的起止日期(即周一至周日的日期)
    private function getWeekDate($year, $weeknum)
    {
        $firstdayofyear = mktime(0, 0, 0, 1, 1, $year);
        $firstweekday = date('N', $firstdayofyear); //星期数
        $firstweenum = date('W', $firstdayofyear); //周数
        if (intval($firstweenum) == 1) {
            $day = (0 - ($firstweekday - 1)) + 7 * ($weeknum - 1);
        } else {
            $day = (8 - $firstweekday) + 7 * ($weeknum - 1);
        }
        $startdate = date('Y-m-d', mktime(0, 0, 0, 1, $day+1, $year));
        $enddate = date('Y-m-d', mktime(0, 0, 0, 1, $day+7, $year));
        return [$startdate, $enddate];
    }

    //根据日期获取年份、月份、天、星期几、本月天数、本年天数、本年第几周及起止日期
    private function getDateInfo($now)
    {
         $arr = array();
         //$first =1 表示每周星期一为开始日期 0表示每周日为开始日期
         $arr['year'] = date('Y', strtotime($now)); $first = 1;
         $arr['month'] = date('m', strtotime($now));
         $arr['day'] = date('d', strtotime($now));
         $arr['week'] = date('N', strtotime($now));
         //当年总天数
         $arr['year_days'] = date('L', strtotime($now))?'366':'365';
         //本月总天数
         $arr['month_days'] = date("t",strtotime($now));
         //当年总周数
         $year_end = mktime(0,0,0,12,31, $arr['year']);
         $arr['year_weeks']=(intval(date('W',$year_end))===1)?date('W',strtotime('last week',$year_end)):date('W',$year_end);
         //当日在整年中的第几周, 获取当前周的第几天 周日是 0 周一到周六是 1 - 6
         $arr['week_num'] = date('W', strtotime($now)); $w = date('w', strtotime($now));
         //获取本周开始日期,如果$w是0,则表示周日,减去 6 天
         $arr['week_start'] = $week_start = date('Y-m-d', strtotime("$now -" . ($w ? $w - $first : 6) . ' days'));
         //本周结束日期
         $week_end = date('Y-m-d', strtotime("$week_start +6 days"));
         $arr['week_end'] = $week_end;
         return $arr;
    }


运行结果如下:

上一篇:PHP 实现数组分页显示

下一篇:PHP 的两个版本TS和NTS说明

讨论数量:0

请先登录再发表讨论。 2024-11-24

天涯网魂
3 杠 5 星
TA 的文章
TA 的随言
TA 的资源链