84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
业务需要,根据当前时间判断这个月每一周是几号到几号,比如这个月,第一周是1号到5号,第二周是6号到12号。。返回数组最好,不要年的,要月,俺是菜鸟,希望大神给予代码个思路...谢谢了
PHP如何判断每个月的每一周是几号到几号?-PHP中文网问答-PHP如何判断每个月的每一周是几号到几号?-PHP中文网问答
围观一下哦,学习一下。
/** * @param DateTime|int|string|null $date 可以是DateTime对象、时间戳、字符串形式的日期或者空值表示当前月份 * @return array [[1,2,3,4,5], ...] 分别表示这月每一周都是几号到几号 */ function getWeeksOfMonth($date=null){ if (is_numeric($date)){ $d = new DateTime(); $d->setTimestamp($date); $date = $d; } else if (is_string($date)){ $date = new DateTime($date); } else if ($date instanceof DateTime){ // nothing to do } else if (!$date){ $date = new DateTime(); } else { throw new InvalidArgumentException("Invalid type of date!"); } // 当前日期是在一个月里面是第几天 // j: 月份中的第几天,没有前导零 1 到 31 $dateDay = (int)$date->format('j'); // 这个月1号是星期几 // N: 1(表示星期一)到 7(表示星期天) $beginWeekDay = (int)$date->sub(new DateInterval("P" . ($dateDay - 1) . "D"))->format('N'); // 这个月最后一天是几号 // j 月份中的第几天,没有前导零 1 到 31 $endMonthDay = (int)($date->add(new DateInterval('P1M'))->sub(new DateInterval("P1D"))->format('j')); $weeks = []; $indexOfWeek = 0; $weekDay = $beginWeekDay; for ($day = 1; $day <= $endMonthDay; $day++){ if (!isset($weeks[$indexOfWeek])){ $weeks[$indexOfWeek] = []; } $weeks[$indexOfWeek][] = $day; $weekDay++; if ($weekDay > 7){ $weekDay = $weekDay - 7; $indexOfWeek++; } } // 只要一个星期里面的第一天和最后一天? foreach ($weeks as &$week) { $week = [$week[0], end($week)]; } return $weeks; } // 测试一下: foreach (getWeeksOfMonth() as $week){ echo implode(", ", $week) . "\n"; } // 输出:(今天是2017-03-08) // 1, 5 // 6, 12 // 13, 19 // 20, 26 // 27, 31 //
用到的日期时间API比较少,应该比较高效吧
PHP如何判断每个月的每一周是几号到几号?-PHP中文网问答-PHP如何判断每个月的每一周是几号到几号?-PHP中文网问答
围观一下哦,学习一下。
用到的日期时间API比较少,应该比较高效吧