Files
Message-Push-Nest/pkg/util/time.go
T

70 lines
1.4 KiB
Go
Raw Normal View History

2023-12-30 17:40:20 +08:00
package util
import (
"database/sql/driver"
"fmt"
"time"
)
const timeFormat = "2006-01-02 15:04:05"
const timezone = "Asia/Shanghai"
// 全局定义
type Time time.Time
func (t Time) MarshalJSON() ([]byte, error) {
b := make([]byte, 0, len(timeFormat)+2)
b = append(b, '"')
b = time.Time(t).AppendFormat(b, timeFormat)
b = append(b, '"')
return b, nil
}
func (t *Time) UnmarshalJSON(data []byte) (err error) {
now, err := time.ParseInLocation(`"`+timeFormat+`"`, string(data), time.Local)
*t = Time(now)
return
}
func (t Time) String() string {
return time.Time(t).Format(timeFormat)
}
func (t Time) local() time.Time {
loc, _ := time.LoadLocation(timezone)
return time.Time(t).In(loc)
}
func (t Time) Value() (driver.Value, error) {
var zeroTime time.Time
var ti = time.Time(t)
if ti.UnixNano() == zeroTime.UnixNano() {
return nil, nil
}
return ti, nil
}
func (t *Time) Scan(v interface{}) error {
value, ok := v.(time.Time)
if ok {
*t = Time(value)
return nil
}
return fmt.Errorf("can not convert %v to timestamp", v)
}
2024-01-26 10:14:07 +08:00
// GetNowTimeStr 获取当前的时间字符串
func GetNowTimeStr() string {
2024-04-29 17:31:13 +08:00
chinaTime := GetNowTime()
2024-01-26 10:14:07 +08:00
formattedTime := chinaTime.Format("2006-01-02 15:04:05")
return formattedTime
}
2024-04-29 17:31:13 +08:00
// GetNowTimeStr 获取当前的时间字符串
func GetNowTime() time.Time {
currentTimeUTC := time.Now().UTC()
chinaTime := currentTimeUTC.Add(8 * time.Hour)
return chinaTime
}