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

PHP 987 0 2023-07-06

PHP获取相关周的时间函数

以下实现两种功能:

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

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

代码如下:

LANG-PHP
www.hilo8.com
  1. //调用实例
  2. public function ts(){
  3. dump($this->getWeekDate(2023,27));
  4. dump($this->getDateInfo('2023-07-06'));
  5. }
  6. //根据年份和周数获取日期范围,返回周的起止日期(即周一至周日的日期)
  7. private function getWeekDate($year, $weeknum)
  8. {
  9. $firstdayofyear = mktime(0, 0, 0, 1, 1, $year);
  10. $firstweekday = date('N', $firstdayofyear); //星期数
  11. $firstweenum = date('W', $firstdayofyear); //周数
  12. if (intval($firstweenum) == 1) {
  13. $day = (0 - ($firstweekday - 1)) + 7 * ($weeknum - 1);
  14. } else {
  15. $day = (8 - $firstweekday) + 7 * ($weeknum - 1);
  16. }
  17. $startdate = date('Y-m-d', mktime(0, 0, 0, 1, $day+1, $year));
  18. $enddate = date('Y-m-d', mktime(0, 0, 0, 1, $day+7, $year));
  19. return [$startdate, $enddate];
  20. }
  21. //根据日期获取年份、月份、天、星期几、本月天数、本年天数、本年第几周及起止日期
  22. private function getDateInfo($now)
  23. {
  24. $arr = array();
  25. //$first =1 表示每周星期一为开始日期 0表示每周日为开始日期
  26. $arr['year'] = date('Y', strtotime($now)); $first = 1;
  27. $arr['month'] = date('m', strtotime($now));
  28. $arr['day'] = date('d', strtotime($now));
  29. $arr['week'] = date('N', strtotime($now));
  30. //当年总天数
  31. $arr['year_days'] = date('L', strtotime($now))?'366':'365';
  32. //本月总天数
  33. $arr['month_days'] = date("t",strtotime($now));
  34. //当年总周数
  35. $year_end = mktime(0,0,0,12,31, $arr['year']);
  36. $arr['year_weeks']=(intval(date('W',$year_end))===1)?date('W',strtotime('last week',$year_end)):date('W',$year_end);
  37. //当日在整年中的第几周, 获取当前周的第几天 周日是 0 周一到周六是 1 - 6
  38. $arr['week_num'] = date('W', strtotime($now)); $w = date('w', strtotime($now));
  39. //获取本周开始日期,如果$w是0,则表示周日,减去 6 天
  40. $arr['week_start'] = $week_start = date('Y-m-d', strtotime("$now -" . ($w ? $w - $first : 6) . ' days'));
  41. //本周结束日期
  42. $week_end = date('Y-m-d', strtotime("$week_start +6 days"));
  43. $arr['week_end'] = $week_end;
  44. return $arr;
  45. }


运行结果如下:

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

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

讨论数量:0

请先登录再发表讨论。 2025-06-17

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