You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
1.4 KiB
78 lines
1.4 KiB
package model |
|
|
|
import ( |
|
"database/sql/driver" |
|
"fmt" |
|
"strconv" |
|
xtime "time" |
|
) |
|
|
|
// WaitTime 计算等待时长 |
|
func WaitTime(ctime xtime.Time) string { |
|
wt := xtime.Since(ctime) |
|
h := int(wt.Hours()) |
|
m := int(wt.Minutes()) % 60 |
|
s := int(wt.Seconds()) % 60 |
|
return fmt.Sprintf("%.2d:%.2d:%.2d", h, m, s) |
|
} |
|
|
|
//IntTime . |
|
type IntTime int64 |
|
|
|
// Scan scan time. |
|
func (jt *IntTime) Scan(src interface{}) (err error) { |
|
switch sc := src.(type) { |
|
case xtime.Time: |
|
*jt = IntTime(sc.Unix()) |
|
case string: |
|
var i int64 |
|
i, err = strconv.ParseInt(sc, 10, 64) |
|
*jt = IntTime(i) |
|
} |
|
return |
|
} |
|
|
|
// Value get time value. |
|
func (jt IntTime) Value() (driver.Value, error) { |
|
return xtime.Unix(int64(jt), 0), nil |
|
} |
|
|
|
// Time get time. |
|
func (jt IntTime) Time() xtime.Time { |
|
return xtime.Unix(int64(jt), 0) |
|
} |
|
|
|
// UnmarshalJSON implement Unmarshaler |
|
func (jt *IntTime) UnmarshalJSON(data []byte) error { |
|
if data == nil || len(data) <= 1 { |
|
*jt = 0 |
|
return nil |
|
} |
|
if data[0] != '"' { |
|
// 1.直接判断数字 |
|
sti, err := strconv.Atoi(string(data)) |
|
if err == nil { |
|
*jt = IntTime(sti) |
|
} |
|
return nil |
|
} |
|
|
|
str := string(data[1 : len(data)-1]) |
|
|
|
// 2.标准格式判断 |
|
st, err := xtime.ParseInLocation("2006-01-02 15:04:05", str, xtime.Local) |
|
if err == nil { |
|
*jt = IntTime(st.Unix()) |
|
return nil |
|
} |
|
|
|
*jt = IntTime(0) |
|
|
|
return nil |
|
} |
|
|
|
//BaseResponse . |
|
type BaseResponse struct { |
|
Code int64 `json:"code"` |
|
Message string `json:"message"` |
|
}
|
|
|