format($format) === $date; } // 获取IP地址 function getIpLocation($ip): string { $ip2region = new \Ip2Region(); try { $region = $ip2region->memorySearch($ip); } catch (\Exception $e) { return '未知'; } list($country, $number, $province, $city, $network) = explode('|', $region['region']); if ($network === '内网IP') { return $network; } if ($country == '中国') { return $province.'-'.$city.':'.$network; } else if ($country == '0') { return '未知'; } else { return $country; } } /** * 两数相除 */ function getRound($num, $base, $precision = 2){ if (!$base) return '0'; return round($num / $base, $precision); } /** * 获取百分比 */ function getPercent($num, $base, $precision = 2, $last = '%') { $num = intval($num); $base = intval($base); if (!$base) return '0'; return round($num / $base * 100, $precision) . $last; } // 多维数组排序 function arrSort($data = [],$name='',$sort = 'desc'){ if(!$data || !$name){ return false; } $orders = []; foreach($data as $v){ $orders[] = $v[$name]; } if($sort == 'desc') { array_multisort($orders,SORT_DESC, $data); } else { array_multisort($orders,SORT_ASC, $data); } return $data; } // 传入两日期,获取年范围 function getYearRange($startDate, $endDate) { $startYear = (int)date('Y', strtotime($startDate)); $endYear = (int)date('Y', strtotime($endDate)); $years = []; for ($year = $startYear; $year <= $endYear; $year++) { $years[] = $year; } return $years; } // 获取两个日期之间的所有月份 function getMonthRange($startDate, $endDate): array { $months = []; // 转换为 DateTime 对象 $start = new DateTime($startDate); $end = new DateTime($endDate); // 确保开始日期不大于结束日期 if ($start > $end) { return $months; } // 设置开始日期为当月的第一天 $start->modify('first day of this month'); // 循环直到超过结束日期 while ($start <= $end) { // 添加当前月份到数组(格式:202508) $months[] = $start->format('Ym'); // 增加一个月 $start->add(new DateInterval('P1M')); } return $months; } // 获取两个日期之间的所有日期 function getDateRange($startDate, $endDate): array { $dates = []; $startDate = new \DateTime($startDate); $endDate = new \DateTime($endDate); $endDate->modify('+1 day'); // 添加一天,包含结束日期 $interval = new \DateInterval('P1D'); $dateRange = new \DatePeriod($startDate, $interval, $endDate); foreach ($dateRange as $date) { $dates[] = $date->format('Y-m-d'); } return $dates; } /** * 获取月份差 */ function getMonthNum($sdate,$edate): float|int { if($sdate > $edate){ return 0; } list($y1,$m1)=explode("-",date('Y-m',strtotime($sdate))); list($y2,$m2)=explode("-",date('Y-m',strtotime($edate))); return abs(($y2-$y1)*12 + $m2-$m1); } /** * 获取两个日期之间的天数 */ function getDateNum($sdate,$edate): float|int { return ceil((strtotime($edate) - strtotime($sdate)) / 86400); }