php获取一年中的第x周是在几月
微wx笑
2022-04-04【编程语言】
81
2
0关键字:
php
php获取一年中的第x周是在几月,求一年中的第$week周属于几月份
php获取一年中的第x周是在几月,求一年中的第$week周属于几月份
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 ; } ?> |
本文由 微wx笑 创作,采用 署名-非商业性使用-相同方式共享 4.0 许可协议,转载请附上原文出处链接及本声明。
原文链接:https://www.ivu4e.cn/blog/lang/2022-04-04/1142.html