mirror of
https://gitee.com/xiangheng/x_admin.git
synced 2025-09-27 12:32:19 +08:00
119 lines
2.0 KiB
Go
119 lines
2.0 KiB
Go
package util
|
|
|
|
import (
|
|
"time"
|
|
"x_admin/core"
|
|
)
|
|
|
|
var NullTimeUtil = nullTimeUtil{
|
|
DateFormat: "2006-01-02",
|
|
TimeFormat: "2006-01-02 15:04:05",
|
|
}
|
|
|
|
// arrayUtil 数组工具类
|
|
type nullTimeUtil struct {
|
|
DateFormat string
|
|
TimeFormat string
|
|
}
|
|
|
|
// DecodeTime 时间解码
|
|
func (t nullTimeUtil) DecodeTime(value any) (any, error) {
|
|
tt, e := t.Parse(value)
|
|
return tt, e
|
|
}
|
|
|
|
// EncodeTime 时间编码
|
|
func (t nullTimeUtil) EncodeTime(value any) any {
|
|
var str = ""
|
|
switch v := value.(type) {
|
|
case map[string]interface{}:
|
|
val := v["Time"]
|
|
switch tt := val.(type) {
|
|
case *string:
|
|
ttt, _ := t.Parse(*tt)
|
|
str = ttt.String()
|
|
case *time.Time:
|
|
if tt != nil {
|
|
ttt, _ := t.Parse(*tt)
|
|
str = ttt.String()
|
|
} else {
|
|
str = ""
|
|
}
|
|
}
|
|
|
|
}
|
|
return str
|
|
}
|
|
|
|
// ToUnix 时间戳转时间戳
|
|
func (t nullTimeUtil) ToUnix(date any) int64 {
|
|
switch v := date.(type) {
|
|
case string:
|
|
if v == "" {
|
|
return 0
|
|
}
|
|
tt, e := time.Parse(t.TimeFormat, v)
|
|
if e != nil {
|
|
return 0
|
|
}
|
|
return time.Time(tt).Unix()
|
|
case time.Time:
|
|
return v.Unix()
|
|
default:
|
|
return 0
|
|
}
|
|
}
|
|
|
|
// Parse 时间戳转时间
|
|
func (t nullTimeUtil) Parse(value interface{}) (core.NullTime, error) {
|
|
switch v := value.(type) {
|
|
case string:
|
|
tt, e := t.ParseString(v)
|
|
return tt, e
|
|
case time.Time:
|
|
tt := t.ParseTime(v)
|
|
return tt, nil
|
|
case core.NullTime:
|
|
return v, nil
|
|
default:
|
|
return t.Null(), nil
|
|
}
|
|
}
|
|
|
|
// ParseTime 时间转时间戳
|
|
func (t nullTimeUtil) ParseTime(date time.Time) core.NullTime {
|
|
return core.NullTime{
|
|
Time: &date,
|
|
Valid: true,
|
|
}
|
|
}
|
|
|
|
// ParseString 时间字符串转时间戳
|
|
func (t nullTimeUtil) ParseString(date string) (core.NullTime, error) {
|
|
tt, e := time.Parse(t.TimeFormat, date)
|
|
if e != nil {
|
|
return t.Null(), e
|
|
}
|
|
return core.NullTime{
|
|
Time: &tt,
|
|
Valid: true,
|
|
}, nil
|
|
}
|
|
|
|
// NowTime 当前时间
|
|
func (t nullTimeUtil) Null() core.NullTime {
|
|
return core.NullTime{
|
|
Time: nil,
|
|
Valid: true,
|
|
}
|
|
}
|
|
|
|
// NowTime 当前时间
|
|
func (t nullTimeUtil) Now() core.NullTime {
|
|
now := time.Now()
|
|
return core.NullTime{
|
|
Time: &now,
|
|
Valid: true,
|
|
}
|
|
}
|