以下常用方法列表,文档更新可能滞后于代码新特性,更多的方法及示例请参考代码文档:https://pkg.go.dev/github.com/gogf/gf/v2/os/gtime |
New
New
创建并返回一个具有给定参数的 Time
对象。格式:
func New(param ...interface{}) *Time |
示例:创建时间对象。
func ExampleNew() { t1 := gtime.New(time.Now()) t2 := gtime.New("2018-08-08 08:08:08") t3 := gtime.New(1533686888) fmt.Println(t1) fmt.Println(t2) fmt.Println(t3) // Output: // 2021-11-18 14:18:27 // 2018-08-08 08:08:08 // 2018-08-08 08:08:08 |
Now
Now
创建并返回一个当前时间对象。格式:
func Now() *Time |
示例:获取当前时间对象。
func ExampleNow() { t := gtime.Now() fmt.Println(t) // Output: // 2021-11-06 13:41:08 } |
Format
格式:
func (t *Time) Format(format string) string |
示例:格式化输出时间。完整的时间格式可查阅 时间管理-时间格式。
func ExampleTime_Format() { gt1 := gtime.New("2018-08-08 08:08:08") fmt.Println(gt1.Format("Y-m-d")) fmt.Println(gt1.Format("l")) fmt.Println(gt1.Format("F j, Y, g:i a")) fmt.Println(gt1.Format("j, n, Y")) fmt.Println(gt1.Format("h-i-s, j-m-y, it is w Day z")) fmt.Println(gt1.Format("D M j G:i:s T Y")) // Output: // 2018-08-08 // Wednesday // August 8, 2018, 8:08 am // 8, 8, 2018 // 08-08-08, 8-08-18, 0831 0808 3 Wedam18 219 // Wed Aug 8 8:08:08 CST 2018 } |
String
格式:
func (t *Time) String() string |
示例:输出字符串类型。
func ExampleTime_String() { gt := gtime.New("2018-08-08 08:08:08") t1 := gt.String() fmt.Println(t1) fmt.Println(reflect.TypeOf(t1)) // Output: // 2018-08-08 08:08:08 // string } |
Timestamp
TimestampMicro/TimestampMilli/TimestampNano
。格式:
func (t *Time) Timestamp() int64 func Timestamp() int64 |
示例:获取当前对象的秒时间戳。
func ExampleTime_Timestamp() { t := gtime.Now() fmt.Println(t.Timestamp()) fmt.Println(gtime.Timestamp()) fmt.Println(t.TimestampMicro()) fmt.Println(t.TimestampMilli()) fmt.Println(t.TimestampNano()) // Output: // 1533686888 // 1533686888 // 1533686888000 // 1533686888000000 // 1533686888000000000 } |
ToZone
格式:
func (t *Time) ToZone(zone string) (*Time, error) |
示例:获取当前对象的秒时间戳。
func ExampleTime_ToZone() { gt1 := gtime.Now() gt2, _ := gt1.ToZone("Asia/Shanghai") gt3, _ := gt1.ToZone("Asia/Tokyo") fmt.Println(gt2) fmt.Println(gt3) // May Output: // 2021-11-11 17:10:10 // 2021-11-11 18:10:10 } |
SetTimeZone
格式:
func SetTimeZone(zone string) error |
示例: 设置时区。
func ExampleSetTimeZone() { gtime.SetTimeZone("Asia/Shanghai") fmt.Println(gtime.Datetime()) gtime.SetTimeZone("Asia/Tokyo") fmt.Println(gtime.Datetime()) // May Output: // 2018-08-08 08:08:08 // 2018-08-08 09:08:08 } |
StrToTime
格式:
func StrToTime(str string, format ...string) (*Time, error) |
示例: 时间字符串转成时间对象。
func ExampleStrToTime() { res, _ := gtime.StrToTime("2006-01-02T15:04:05-07:00", "Y-m-d H:i:s") fmt.Println(res) // May Output: // 2006-01-02 15:04:05 } |
Add
格式:
func (t *Time) Add(d time.Duration) *Time |
示例: 在当前时间对象上增加时间。
func ExampleTime_Add() { gt := gtime.New("2018-08-08 08:08:08") gt1 := gt.Add(time.Duration(10) * time.Second) fmt.Println(gt1) // Output: // 2018-08-08 08:08:18 } |
StartOfDay
StartOfHalf/StartOfHour/StartOfMonth/StartOfMinute/StartOfQuarter
等。格式:
func (t *Time) StartOfDay() *Time |
示例: 返回今天最开始的时间对象。
func ExampleTime_StartOfDay() { gt1 := gtime.New("2018-08-08 08:08:08") fmt.Println(gt1.StartOfDay()) // Output: // 2018-08-08 00:00:00 } |
EndOfDay
EndOfHalf/EndOfHour/EndOfMonth/EndOfMinute/EndOfQuarter
等。格式:
func (t *Time) EndOfDay() *Time |
示例: 返回今天结束的时间对象。
func ExampleTime_EndOfDay() { gt1 := gtime.New("2018-08-08 08:08:08") fmt.Println(gt1.EndOfDay()) // Output: // 2018-08-08 23:59:59 } |
Month
格式:
func (t *Time) Month() int |
示例: 返回这个月处于全年的索引号。
func ExampleTime_Month() { gt := gtime.New("2018-08-08 08:08:08") t1 := gt.Month() fmt.Println(t1) // Output: // 8 } |
Second
格式:
func (t *Time) Second() int |
示例: 返回这个月处于全年的索引号。
func ExampleTime_Second() { gt := gtime.New("2018-08-08 08:08:08") t1 := gt.Second() fmt.Println(t1) // Output: // 8 } |
IsZero
0001-01-01 00:00:00
。注意不代表时间戳为0, 时间戳为0是1970-01-01 08:00:00
格式:
func (t *Time) IsZero() bool |
示例: 返回这个月处于全年的索引号。
func ExampleTime_IsZero() { gt := gtime.New("0-0-0") fmt.Println(gt.IsZero()) // Output: // true } |
AddDate
格式:
func (t *Time) AddDate(years int, months int, days int) *Time |
示例: 在当前时间对象上增加指定年月日。
func ExampleTime_AddDate() { var ( year = 1 month = 2 day = 3 ) gt := gtime.New("2018-08-08 08:08:08") gt = gt.AddDate(year, month, day) fmt.Println(gt) // Output: // 2019-10-11 08:08:08 } |
Equal
格式:
func (t *Time) Equal(u *Time) bool |
示例: 判断两个时间对象是否相等。
func ExampleTime_Equal() { gt1 := gtime.New("2018-08-08 08:08:08") gt2 := gtime.New("2018-08-08 08:08:08") fmt.Println(gt1.Equal(gt2)) // Output: // true } |
Before
格式:
func (t *Time) Before(u *Time) bool |
示例: 判断两个时间对象前后顺序。
func ExampleTime_Before() { gt1 := gtime.New("2018-08-07 08:08:08") gt2 := gtime.New("2018-08-08 08:08:08") fmt.Println(gt1.Before(gt2)) // Output: // true } |
After
格式:
func (t *Time) After(u *Time) bool |
示例: 判断两个时间对象前后顺序。
func ExampleTime_After() { gt1 := gtime.New("2018-08-07 08:08:08") gt2 := gtime.New("2018-08-08 08:08:08") fmt.Println(gt1.After(gt2)) // Output: // false } |
Layout
格式:
func (t *Time) Layout(layout string) string |
示例: 格式化输出时间。
func ExampleTime_Layout() { gt1 := gtime.New("2018-08-08 08:08:08") fmt.Println(gt1.Layout("2006-01-02")) // Output: // 2018-08-08 } |
IsLeapYear
格式:
func (t *Time) IsLeapYear() bool |
示例: 是否闰年。
func ExampleTime_IsLeapYear() { gt1 := gtime.New("2018-08-08 08:08:08") fmt.Println(gt1.IsLeapYear()) // Output: // false } |
Date
格式:
func Date() string |
示例: 获取日期。
func ExampleDate() { fmt.Println(gtime.Date()) // May Output: // 2006-01-02 } |
Datetime
格式:
func Datetime() string |
示例: 获取日期。
func ExampleDatetime() { fmt.Println(gtime.Datetime()) // May Output: // 2006-01-02 15:04:05 } |
ISO8601
格式:
func ISO8601() string |
示例:
func ExampleISO8601() { fmt.Println(gtime.ISO8601()) // May Output: // 2006-01-02T15:04:05-07:00 } |
RFC822
格式:
func RFC822() string |
示例:
func ExampleRFC822() { fmt.Println(gtime.RFC822()) // May Output: // Mon, 02 Jan 06 15:04 MST } |
StrToTimeFormat
StrToTimeFormat
根据传入的时间字符串以及格式返回时间对象格式:
func StrToTimeFormat(str string, format string) (*Time, error) |
示例:
func ExampleStrToTimeFormat() { res, _ := gtime.StrToTimeFormat("2006-01-02 15:04:05", "Y-m-d H:i:s") fmt.Println(res) // Output: // 2006-01-02 15:04:05 } |
StrToTimeLayout
StrToTimeLayout
根据传入的时间字符串以及格式返回时间对象格式:
func StrToTimeLayout(str string, layout string) (*Time, error) |
示例:
func ExampleStrToTimeLayout() { res, _ := gtime.StrToTimeLayout("2018-08-08", "2006-01-02") fmt.Println(res) // Output: // 2018-08-08 00:00:00 } |
MarshalJSON
MarshalJSON
重载json.Marshal
中的方法。格式:
func (t *Time) MarshalJSON() ([]byte, error) |
示例:
func ExampleTime_MarshalJSON() { type Person struct { Name string `json:"name"` Birthday *gtime.Time `json:"birthday"` } p := new(Person) p.Name = "goframe" p.Birthday = gtime.New("2018-08-08 08:08:08") j, _ := json.Marshal(p) fmt.Println(string(j)) // Output: // {"name":"xiaoming","birthday":"2018-08-08 08:08:08"} } |
UnmarshalJSON
UnmarshalJSON
重载json.Unmarshal
中的方法。格式:
func (t *Time) UnmarshalJSON() ([]byte, error) |
示例:
func ExampleTime_MarshalJSON() { type Person struct { Name string `json:"name"` Birthday *gtime.Time `json:"birthday"` } p := new(Person) p.Name = "goframe" p.Birthday = gtime.New("2018-08-08 08:08:08") j, _ := json.Marshal(p) fmt.Println(string(j)) // Output: // {"name":"xiaoming","birthday":"2018-08-08 08:08:08"} } |
WeekOfYear
WeekOfYear
返回当前周处于全年第几周,从1开始计算。类似的还有DayOfYear/DaysInMonth
格式:
func (t *Time) WeeksOfYear() int |
示例:
func ExampleTime_WeeksOfYear() { gt1 := gtime.New("2018-01-08 08:08:08") fmt.Println(gt1.WeeksOfYear()) // Output: // 2 }D |