daShangDao_centerBook/util/common.go
2026-03-13 13:49:09 +08:00

48 lines
1003 B
Go

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()
}