diff --git a/pkg/utils/pdf.go b/pkg/utils/pdf.go index af5f4c9b..9d62fd9c 100644 --- a/pkg/utils/pdf.go +++ b/pkg/utils/pdf.go @@ -617,17 +617,17 @@ func QuestionnaireSurveyPDF(templatePath, outputPath string, data *model.Questio return fmt.Errorf("设置字体失败: %w", err) } - startTime, err := time.Parse("2006-01-02", data.BundleStartDate) + startTime, err := parseFlexibleDate(data.BundleStartDate) if err != nil { return fmt.Errorf("BundleStartDate格式错误: %w", err) } - endTime, err := time.Parse("2006-01-02", data.BundleEndDate) + endTime, err := parseFlexibleDate(data.BundleEndDate) if err != nil { return fmt.Errorf("BundleEndDate格式错误: %w", err) } - submissionDate, err := time.Parse("2006-01-02", data.SubmissionDate) + submissionDate, err := parseFlexibleDate(data.SubmissionDate) if err != nil { - return fmt.Errorf("submissionDate格式错误: %w", err) + return fmt.Errorf("SubmissionDate格式错误: %w", err) } nowTime := time.Now().Format(time.DateTime) onePage := 1 @@ -868,3 +868,26 @@ func scoreStars(score int) string { return "★★★★★" } } +func parseFlexibleDate(value string) (time.Time, error) { + v := strings.TrimSpace(value) + if v == "" { + return time.Time{}, fmt.Errorf("日期为空") + } + + layouts := []string{ + "2006-01-02", + time.RFC3339, + "2006-01-02 15:04:05", + "2006-01-02 15:04", + } + + var lastErr error + for _, layout := range layouts { + t, err := time.Parse(layout, v) + if err == nil { + return t, nil + } + lastErr = err + } + return time.Time{}, fmt.Errorf("不支持的日期格式: %s, %w", v, lastErr) +}