123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- 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"`
- }
|