48 lines
1003 B
Go
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()
|
|
}
|