| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- package models
- import (
- "strings"
- "time"
- )
- type Time time.Time
- const (
- timeFormat = "2006-01-02 15:04:05"
- )
- func NowLocal() Time {
- return Time(time.Now())
- }
- func (t *Time) UnmarshalJSON(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 = Time(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 == "0001-01-01 00:00:00" {
- dataStr = timeFormat
- }
- } 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 = Time(now)
- return err
- }
- 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
- }
|