GoFrame gtime-方法介紹

2022-04-09 09:56 更新

以下常用方法列表,文檔更新可能滯后于代碼新特性,更多的方法及示例請參考代碼文檔:https://pkg.go.dev/github.com/gogf/gf/v2/os/gtime

New

  • 說明:?New? 創(chuàng)建并返回一個具有給定參數(shù)的 ?Time?對象。
  • 格式: 
func New(param ...interface{}) *Time
  • 示例:創(chuàng)建時間對象。
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?創(chuàng)建并返回一個當前時間對象。
  • 格式:
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

  • 說明:  設置時區(qū)。
  • 格式:
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

  • 說明:  設置時區(qū)。
  • 格式:
func SetTimeZone(zone string) error
  • 示例: 設置時區(qū)。
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

  • 說明:  時間字符串轉(zhuǎn)成時間對象。
  • 格式:
func StrToTime(str string, format ...string) (*Time, error)
  • 示例: 時間字符串轉(zhuǎn)成時間對象。
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

  • 說明:  返回今天結(jié)束的時間對象。類似的還有?EndOfHalf/EndOfHour/EndOfMonth/EndOfMinute/EndOfQuarter?等。
  • 格式:
func (t *Time) EndOfDay() *Time
  • 示例: 返回今天結(jié)束的時間對象。
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

  • 說明:  返回當前分鐘的秒數(shù)。例如,10:10:08 對應的秒數(shù)為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?根據(jù)傳入的時間字符串以及格式返回時間對象
  • 格式:
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?根據(jù)傳入的時間字符串以及格式返回時間對象
  • 格式:
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
}


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號