代码拉取完成,页面将自动刷新
package xztime
import (
"database/sql/driver"
"fmt"
sysTime "time"
)
type Time struct {
sysTime.Time
layout string
}
var TimeLayout = "2006-01-02 15:04:05"
// 在使用 json.Marshal 时触发
func (t Time) MarshalJSON() ([]byte, error) {
if t.layout == "" {
return []byte(fmt.Sprintf(`"%s"`, t.Format(TimeLayout))), nil
} else {
return []byte(fmt.Sprintf(`"%s"`, t.Format(t.layout))), nil
}
}
// 在使用 json.Unmarshal 时触发
func (t *Time) UnmarshalJSON(data []byte) error {
st, err := sysTime.Parse(`"`+TimeLayout+`"`, string(data))
if err != nil {
return err
}
*t = Time{Time: st}
return nil
}
func (t Time) Value() (driver.Value, error) {
var zeroTime sysTime.Time
if t.Time.UnixNano() == zeroTime.UnixNano() {
return nil, nil
}
return t.Time, nil
}
func (t *Time) Scan(v interface{}) error {
value, ok := v.(sysTime.Time)
if ok {
*t = Time{Time: value}
return nil
}
return fmt.Errorf("can not convert %v to timestamp", v)
}
// fmt.Printf 触发
func (t *Time) String() string {
if t.layout == "" {
return fmt.Sprintf(`"%s"`, t.Format(TimeLayout))
} else {
return fmt.Sprintf(`"%s"`, t.Format(t.layout))
}
}
// 当前时间
func Now() Time {
return Time{Time: sysTime.Now()}
}
// 根据字符解析时间
func Parse(layout, value string) (time Time, err error) {
t, err := sysTime.Parse(layout, value)
if err != nil {
return
}
time.Time = t
return
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。