71 lines
1.4 KiB
Go
71 lines
1.4 KiB
Go
package date
|
||
|
||
import (
|
||
"fmt"
|
||
"time"
|
||
|
||
"ems.agt/lib/log"
|
||
)
|
||
|
||
const (
|
||
// 年 列如:2022
|
||
YYYY = "2006"
|
||
// 年-月 列如:2022-12
|
||
YYYY_MM = "2006-01"
|
||
// 年-月-日 列如:2022-12-30
|
||
YYYY_MM_DD = "2006-01-02"
|
||
// 年月日时分秒 列如:20221230010159
|
||
YYYYMMDDHHMMSS = "20060102150405"
|
||
// 年-月-日 时:分:秒 列如:2022-12-30 01:01:59
|
||
YYYY_MM_DD_HH_MM_SS = "2006-01-02 15:04:05"
|
||
)
|
||
|
||
// 格式时间字符串
|
||
//
|
||
// dateStr 时间字符串
|
||
//
|
||
// formatStr 时间格式 默认YYYY-MM-DD HH:mm:ss
|
||
func ParseStrToDate(dateStr, formatStr string) time.Time {
|
||
t, err := time.Parse(formatStr, dateStr)
|
||
if err != nil {
|
||
log.Infof("utils ParseStrToDate err %v", err)
|
||
return time.Time{}
|
||
}
|
||
return t
|
||
}
|
||
|
||
// 格式时间
|
||
//
|
||
// date 可转的Date对象
|
||
//
|
||
// formatStr 时间格式 默认YYYY-MM-DD HH:mm:ss
|
||
func ParseDateToStr(date any, formatStr string) string {
|
||
t, ok := date.(time.Time)
|
||
if !ok {
|
||
switch v := date.(type) {
|
||
case int64:
|
||
if v == 0 {
|
||
return ""
|
||
}
|
||
t = time.UnixMilli(v)
|
||
case string:
|
||
parsedTime, err := time.Parse(formatStr, v)
|
||
if err != nil {
|
||
fmt.Printf("utils ParseDateToStr err %v \n", err)
|
||
return ""
|
||
}
|
||
t = parsedTime
|
||
default:
|
||
return ""
|
||
}
|
||
}
|
||
return t.Format(formatStr)
|
||
}
|
||
|
||
// 格式时间成日期路径
|
||
//
|
||
// 年/月 列如:2022/12
|
||
func ParseDatePath(date time.Time) string {
|
||
return date.Format("2006/01")
|
||
}
|