// 辅助函数:将可能缺少年份的日期字符串转为完整 ISO 8601 格式 function normalizeDatetime($datetimeStr, $fallbackYear = null) { if (empty($datetimeStr)) { return ''; } // 如果已经是 ISO 格式或包含完整年月日,直接尝试解析 if (preg_match('/^\d{4}-\d{2}-\d{2}/', $datetimeStr)) { try { return Carbon::parse($datetimeStr)->toIso8601String(); } catch (\Exception $e) { // 解析失败则继续处理 } } // 处理格式:mm-dd HH:ii 或 mm-dd HH:ii:ss if (preg_match('/^(\d{2})-(\d{2})\s+(\d{2}):(\d{2})(?::(\d{2}))?$/', $datetimeStr, $matches)) { $month = $matches[1]; $day = $matches[2]; $hour = $matches[3]; $minute = $matches[4]; $second = $matches[5] ?? '00'; $year = $fallbackYear ?? date('Y'); // 如果月份大于当前月份,推测为去年(可选逻辑) if ($month > date('m') && $fallbackYear === null) { $year = date('Y') - 1; } $fullStr = sprintf('%04d-%02d-%02d %02d:%02d:%02d', $year, $month, $day, $hour, $minute, $second); try { return Carbon::parse($fullStr)->toIso8601String(); } catch (\Exception $e) { return ''; } } // 最后尝试直接解析 try { return Carbon::parse($datetimeStr)->toIso8601String(); } catch (\Exception $e) { return ''; } } // 使用时: $postCreated = normalizeDatetime($post['createdDatetime'] ?? ''); $postModified = !empty($post['editedDatetime']) ? normalizeDatetime($post['editedDatetime']) : $postCreated; // 评论时间同样处理 $commentCreated = normalizeDatetime($comment['createdDatetime'] ?? ''); Madama 有凉席产品吗? - Madama官方社区

动态

未登录无法操作

评论 0

列表为空,暂无内容