package gotime import ( "log" "strconv" "strings" "time" ) // Current 获取当前的时间 func Current() Pro { var err error p := NewPro() p.loc, err = time.LoadLocation("Asia/Shanghai") if err != nil { log.Printf("【gotime】时区错误:%v\n", err) p.Time = time.Now().Add(time.Hour * 8) } else { p.Time = time.Now().In(p.loc) } return p } // SetCurrent 设置当前的时间 func SetCurrent(sTime time.Time) Pro { p := NewPro() p.Time = sTime return p } // SetCurrentParse 设置当前的时间 func SetCurrentParse(str string) Pro { var err error p := NewPro() p.loc, err = time.LoadLocation("Asia/Shanghai") if err != nil { log.Printf("【gotime】时区错误:%v\n", err) p.Time = time.Now().Add(time.Hour * 8) } layout := DateTimeFormat if str == "" || str == "0" || str == "0000-00-00 00:00:00" || str == "0000-00-00" || str == "00:00:00" { return p } if len(str) == 10 && strings.Count(str, "-") == 2 { layout = DateFormat } if strings.Index(str, "T") == 10 { layout = RFC3339Format } if _, err := strconv.ParseInt(str, 10, 64); err == nil { switch len(str) { case 8: layout = ShortDateFormat case 14: layout = ShortDateTimeFormat } } location, _ := time.ParseInLocation(layout, str, p.loc) p.Time = location return p } // SetCurrentUnix 设置当前的时间 Unix时间戳 func SetCurrentUnix(ts int64) Pro { p := NewPro() p.Time = time.Unix(ts, 0) return p } // SetCurrentMillisecondUnix 设置当前的时间 毫秒Unix时间戳 func SetCurrentMillisecondUnix(ts int64) Pro { p := NewPro() p.Time = time.Unix(ts/1000, 0) return p } // Now 今天此刻 func (p Pro) Now() time.Time { return p.Time } // Format 今天此刻格式化 func (p Pro) Format() string { return p.Time.Format(DateTimeFormat) } // FormatFilter 今天此刻格式化 带 过滤无效时间 func (p Pro) FormatFilter() string { if p.Time.Format(DateTimeFormat) == "0001-01-01 00:00:00" || p.Time.Format(DateTimeFormat) == "0001-01-01 08:05:43" { return "" } else { return p.Time.Format(DateTimeFormat) } } // ToDateFormat 今天此刻日期 func (p Pro) ToDateFormat() string { return p.Time.Format(DateFormat) } // ToDateFormatTime 今天此刻日期 func (p Pro) ToDateFormatTime() time.Time { return SetCurrentParse(p.Time.Format(DateFormat)).Time } // ToTimeFormat 今天此刻时间 func (p Pro) ToTimeFormat() string { return p.Time.Format(TimeFormat) } // Timestamp 今天此刻时间戳 func (p Pro) Timestamp() int64 { return p.Time.Unix() } // TimestampWithSecond 今天此刻时间戳 func (p Pro) TimestampWithSecond() int64 { return p.Time.Unix() } // TimestampWithMillisecond 今天毫秒级时间戳 func (p Pro) TimestampWithMillisecond() int64 { return p.Time.UnixNano() / int64(time.Millisecond) } // TimestampWithMicrosecond 今天微秒级时间戳 func (p Pro) TimestampWithMicrosecond() int64 { return p.Time.UnixNano() / int64(time.Microsecond) } // TimestampWithNanosecond 今天纳秒级时间戳 func (p Pro) TimestampWithNanosecond() int64 { return p.Time.UnixNano() }