Categories: GoFrame 教程

GoFrame gtime-方法介绍

以下常用方法列表,文档更新可能滞后于代码新特性,更多的方法及示例请参考代码文档: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

  • 说明:  返回这个月处于全年的索引号。例如,1月对应的是1。
  • 格式:
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

  • 说明:  返回当前分钟的秒数。例如,10:10:08 对应的秒数为8。
  • 格式:
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

  • 说明:  以ISO8601的格式返回时间
  • 格式:
func ISO8601() string
  • 示例:
func ExampleISO8601() {
 fmt.Println(gtime.ISO8601())

 // May Output:
 // 2006-01-02T15:04:05-07:00
}

RFC822

  • 说明:  以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
}

唐伯虎点蚊香

前端小白,想各位学习!

Share
Published by
唐伯虎点蚊香

Recent Posts

聊聊vue3中的defineProps

在Vue 3中,defineP…

1 周 ago

在 Chrome 中删除、允许和管理 Cookie

您可以选择删除现有 Cooki…

2 周 ago

自定义指令:聊聊vue中的自定义指令应用法则

今天我们来聊聊vue中的自定义…

3 周 ago

聊聊Vue中@click.stop和@click.prevent

一起来学下聊聊Vue中@cli…

4 周 ago

Nginx 基本操作:启动、停止、重启命令。

我们来学习Nginx基础操作:…

1 月 ago

Vue3:手动清理keep-alive组件缓存的方法

Vue3中手动清理keep-a…

1 月 ago