package util import ( "fmt" "strings" "time" ) // ParsePublicationTime 支持的格式:"2013-12", "2013", "2013-12-25", "2013 年 12 月" 等 func ParsePublicationTime(timeStr string) int64 { if timeStr == "" { return 0 } // 清理字符串中的空格和特殊字符 timeStr = strings.TrimSpace(timeStr) timeStr = strings.ReplaceAll(timeStr, "年", "-") timeStr = strings.ReplaceAll(timeStr, "月", "") timeStr = strings.TrimSpace(timeStr) // 定义多种可能的日期格式 formats := []string{ "2006-1", // "2013-12" "2006-01", // "2013-12" (补零) "2006", // "2013" "2006-1-2", // "2013-12-25" "2006-01-02", // "2013-12-25" (补零) } var t time.Time var err error for _, format := range formats { t, err = time.ParseInLocation(format, timeStr, time.Local) if err == nil { break } } // 如果所有格式都失败,返回 0 if err != nil { fmt.Printf("出版时间解析失败:%s\n", timeStr) return 0 } return t.Unix() }