Quellcode durchsuchen

Merge branch 'v2' of https://git.qianqiusoft.com/qianqiusoft/light-apiengine into v2

huangyh vor 6 Jahren
Ursprung
Commit
567e9545c6
1 geänderte Dateien mit 58 neuen und 2 gelöschten Zeilen
  1. 58 2
      models/LocalTime.go

+ 58 - 2
models/LocalTime.go

@@ -7,12 +7,13 @@ import (
 
 type LocalTime time.Time
 
-func  init()  {
+func init() {
 	AddTableName("local_time")
 }
 
 const (
 	timeFormat = "2006-01-02 15:04:05"
+	zeroTime   = "0001-01-01 00:00:00"
 )
 
 func NowLocal() LocalTime {
@@ -21,7 +22,7 @@ func NowLocal() LocalTime {
 
 func (t *LocalTime) UnmarshalJSON(data []byte) error {
 	if data[0] == '"' && data[len(data)-1] == '"' {
-		data = data[1 : len(data)-1]
+		data = data[1: len(data)-1]
 	}
 
 	dataStr := strings.TrimSpace(string(data))
@@ -66,3 +67,58 @@ func (t LocalTime) MarshalJSON() ([]byte, error) {
 
 	return b, nil
 }
+
+func (t LocalTime) Value() time.Time {
+	return time.Time(t)
+}
+
+func (t LocalTime) String() string {
+	return t.Value().String()
+}
+
+// 数据库解析到对象时调用
+func (t *LocalTime) FromDB(data []byte) error {
+	if data[0] == '"' && data[len(data)-1] == '"' {
+		data = data[1: len(data)-1]
+	}
+
+	dataStr := strings.TrimSpace(string(data))
+	if dataStr == "" {
+		now, err := time.ParseInLocation(timeFormat, string(data), time.Local)
+		*t = LocalTime(now)
+		return err
+	}
+
+	var err error
+	var now time.Time
+
+	if strings.Index(dataStr, "T") > 0 {
+		dataStr = strings.Replace(dataStr, "T", " ", 1)
+	}
+
+	if len(dataStr) > 19 {
+		dataStr = dataStr[0:19]
+		if dataStr == "0000-00-00 00:00:00" {
+			dataStr = zeroTime
+		}
+	} else if len(dataStr) == 10 {
+		dataStr += " 00:00:00"
+	} else if len(dataStr) == 13 {
+		dataStr += ":00:00"
+	} else if len(dataStr) == 16 {
+		dataStr += ":00"
+	}
+
+	now, err = time.ParseInLocation(timeFormat, dataStr, time.Local)
+
+	*t = LocalTime(now)
+
+	return err
+}
+
+// 对象解析到数据库时调用
+func (t LocalTime) ToDB() ([]byte, error) {
+	b := make([]byte, 0, len(timeFormat)+2)
+	b = append(b, []byte(time.Time(t).Format(timeFormat))...)
+	return b, nil
+}