'Y-m-d', 'date_' => 'Y_m_d', 'datetime' => 'Y-m-d H:i:s', 'date_time' => 'Y-m-d H:i' }; return date($format, $times); } } if (!function_exists('get_select_data')) { function get_select_data( array $data = [], bool $is_all = false, string $str1 = 'label', string $str2 = 'value' ): array { $newData = []; if ($is_all) { $newData[] = [$str1 => __('admin.all'), $str2 => '']; } foreach ($data as $key => $value) { $newData[] = [ $str1 => $value, $str2 => $key ]; } return $newData; } } if (!function_exists('get_select_child_data')) { function get_select_child_data( array $data = [], bool $is_all = false, string $str1 = 'label', string $str2 = 'value' ): array { $newData = []; if ($is_all) { $newData[] = [$str1 => __('admin.all'), $str2 => '']; } $child = $data['children'] ?? []; foreach ($data as $key => $value) { if ($key == 'children') { continue; } $arr = [ $str1 => $value, $str2 => $key ]; if (isset($child[$key])) { foreach ($child[$key] as $childKey => $childValue) { $arr['children'][] = [ $str1 => $childValue, $str2 => $childKey ]; } } $newData[] = $arr; } return $newData; } } if (!function_exists('get_ratio')) { function get_ratio($max, $min, $is_unit = true): string { $ratio = 0; if ($max > 0 && $min > 0) { $ratio = round(($min / $max) * 100, 2); } if ($is_unit) { $ratio .= '%'; } return $ratio; } } if (!function_exists('get_time_difference')) { function get_time_difference(string $targetTime, string $now_date = ''): array { try { $target = new DateTime($targetTime); $now = $now_date ? new DateTime($now_date) : new DateTime(); // 计算差值 $interval = $now->diff($target); $totalDays = $interval->days; $hours = $interval->h; $minutes = $interval->i; $seconds = $interval->s; // 判断是过去还是未来 $isFuture = $now < $target; return [ 'days' => $totalDays, 'hours' => $hours, 'minutes' => $minutes, 'seconds' => $seconds, 'is_future' => $isFuture, 'formatted' => sprintf( "%s%d天 %02d时 %02d分 %02d秒", $isFuture ? '' : '-', $totalDays, $hours, $minutes, $seconds ) ]; } catch (Exception $e) { return [ 'error' => '时间格式错误: ' . $e->getMessage() ]; } } } if (!function_exists('get_time_difference_str')) { function get_time_difference_str($date, $now_date = ''): string { $value = ''; $difference = get_time_difference($date, $now_date); if (!isset($difference['error'])) { if (!empty($difference['days'])) { $value .= $difference['days'] . __('controller.parking_space.days'); } if (!empty($difference['hours']) || !empty($value)) { $value .= $difference['hours'] . __('controller.parking_space.hours'); } if (!empty($difference['minutes']) || !empty($value)) { $value .= $difference['minutes'] . __('controller.parking_space.minutes'); } if (!empty($difference['seconds']) || !empty($value)) { $value .= $difference['seconds'] . __('controller.parking_space.seconds'); } } return $value; } } if (!function_exists('get_image_url')) { function get_image_url($image_url): string { return $image_url ? env('APP_URL') . $image_url : ''; } } if (!function_exists('set_space_underline')) { function set_space_underline($str): string { return str_replace(' ', '_', $str); } } // 返回年月所有天 if (!function_exists('get_year_month_days')) { function get_year_month_days($year_month): array { $year_month_times = strtotime($year_month); if (!$year_month_times) { return []; } $monthTimes = strtotime('+1 month', $year_month_times); $monthEndDay = date('d', strtotime('-1 day', $monthTimes)); $dayArr = []; for ($i = 1; $i <= $monthEndDay; $i++) { $dayArr[] = strlen($i) > 1 ? $i : '0' . $i; } return $dayArr; } } if (!function_exists('option_time')) { function option_time($time): array { $str = ''; if ($time) { $str = 'AM'; $end_str = 'PM'; $arr = explode(':', $time); if ($arr[0] > 12) { $time = ($arr[0] - 12) . ':' . $arr[1]; $str = $end_str; } } return [ 'time' => $time, 'str' => $str ]; } } if (!function_exists('__validation')) { function __validation($str): string { return __('validation.' . $str); } } if (!function_exists('__service')) { function __service($str): string { return __('service.' . $str); } } if (!function_exists('__exports')) { function __exports($str): string { return __('exports.' . $str); } }