编程语言您现在的位置是:首页 > 博客日志 > 编程语言

php获取一年中的第x周是在几月

<a href='mailto:'>微wx笑</a>的头像微wx笑 2022-04-04编程语言81 2 0关键字: php  

php获取一年中的第x周是在几月,求一年中的第$week周属于几月份

php获取一年中的第x周是在几月,求一年中的第$week周属于几月份xX3无知

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<?php
//$debug_state = true; //注释掉这一句就不会打印Debug信息
   
function dbglog($msg){
  global $debug_state;
  if (isset($debug_state)){
     echo($msg "<br><br>"); 
  }
}
 
function getYear(){
  return date("Y", time()); 
}
/**
 * 求两个日期之间相差的天数
 * (针对1970年1月1日之后,求之前可以采用泰勒公式)
 * @param string $day1
 * @param string $day2
 * @return number
 */
function diffBetweenTwoDays ($day1$day2)
{
  $second1 strtotime($day1);
  $second2 strtotime($day2);
    
  //if ($second1 < $second2) {
  //  $tmp = $second2;
  //  $second2 = $second1;
  //  $second1 = $tmp;
  //}
  return abs($second1 $second2) / 86400;
}
 
/**
 * 求$year年一共有多少天
*/
function getTotalDay($year){
  $day1 $year "-01-01";
  $day2 $year "-12-31";
  $totalDay = diffBetweenTwoDays($day1$day2);
  return $totalDay + 1;
}
 
/**
 * 求一年中的$month月有多少天
*/
function getDayCountOfMonth($year$month){
  $totalDay = getTotalDay($year);
  $mday = 31; //当前月分有多少天
  $arrMD = [0, 31,28,31,30,31,30,31,31,30,31,30,31];
  if ($month == 2){
     if ($totalDay == 366){
       $mday = 29;
     }else{
       $mday = 28;
     }
  }else{
    $mday =  $arrMD[$month];
  }
  //echo $month . "月有" . $mday . "天<br><br>";
  //echo $month . "月的第" . $week . "周的星期". $wknum . "是" . $day . "日<br><br>";
   
  return $mday;
}
 
/**
 * 求一年中的第$week周属于几月份
*/
function getWeekOfMonth($week){
  $tm = time();
  //$tm = strtotime("2022-03-27 21:30:33");
  $year date("Y"$tm);
  $totalDay = getTotalDay($year);//$year年一共有多少天
  dbglog($year "年一共有" $totalDay "天");
   
  $weekOfYear intval(date('W',$tm)); //获取目前是一年中的第几周
  dbglog("目前是一年中的第" $weekOfYear "周");
  $wkDate strtotime("-" . ($weekOfYear $week) * 7 . " day",$tm);
  $wknum date("w"$tm); //今天是星期几,1=周一,,,6=周六,0=周日
  dbglog("第" $week "周的星期" $wknum "是" date("Y-m-d"$wkDate));
   
  $month intval(date("m"$wkDate));
  dbglog("第" $week "周的星期" $wknum "是在" date("m"$wkDate) . "月");
  $mday = getDayCountOfMonth($year$month); //当前月分有多少天
  dbglog($month "月有" $mday "天");
  
  $day intval(date("d"$wkDate)); //今天是几号
  dbglog("第" $week "周的星期"$wknum "是" $month "月的" $day "日");
  $syday $mday $day//这个月还剩余天数
  dbglog("这个月还剩余" $syday "天");
   
  $m $month;
  switch($wknum){
    case 0:
      if ($day < 5){
        $m $month - 1;
      }
      break;
    case 6:
      if ($day < 4){
        $m $month - 1;
      }
      break;
    case 5:
      if ($day < 3){
        $m $month - 1;
      }
      break;
    case 4:
      if ($day < 2){
        $m $month - 1;
      }
      break;
    case 3:
      if ($day < 1){
        $m $month - 1;
      }
      break;
    case 2:
      if ($syday $wknum < 3){
        $m $month+1; 
      }
      break;
    case 1:
      if ($syday $wknum < 2){
        $m $month+1; 
      }
      break;
    default:
      break;
  }
  return $m;
}
 
?>


xX3无知

本文由 微wx笑 创作,采用 署名-非商业性使用-相同方式共享 4.0 许可协议,转载请附上原文出处链接及本声明。
原文链接:https://www.ivu4e.cn/blog/lang/2022-04-04/1142.html

很赞哦! (7) 有话说 (0)

文章评论