| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- package models
- import (
- "strings"
- "time"
- )
- type LocalTime time.Time
- func init() {
- AddTableName("local_time")
- }
- const (
- timeFormat = "2006-01-02 15:04:05"
- )
- func NowLocal() LocalTime {
- return LocalTime(time.Now())
- }
- func (t *LocalTime) 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 = 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 == "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 = LocalTime(now)
- return err
- }
- func (t LocalTime) 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
- }
|