Go语言时间包time中的可用函数和方法 定义 总结和使用示例

Go语言时间包time中的可用函数和方法

Constants 时间常量 这个就是常用的时间格式布局的常量定义

这个在我们对时间进行解析或者转换为字符串是非常重要, 如果是下面的这些类型之一的可用直接 time.XXX 就可使用, 如常见的标准时间格式 年月日时分秒(2006-01-02 15:04:05) 我们可以直接 time.DateTime 即可。

go 复制代码
const (
	Layout      = "01/02 03:04:05PM '06 -0700" // The reference time, in numerical order.
	ANSIC       = "Mon Jan _2 15:04:05 2006"
	UnixDate    = "Mon Jan _2 15:04:05 MST 2006"
	RubyDate    = "Mon Jan 02 15:04:05 -0700 2006"
	RFC822      = "02 Jan 06 15:04 MST"
	RFC822Z     = "02 Jan 06 15:04 -0700" // RFC822 with numeric zone
	RFC850      = "Monday, 02-Jan-06 15:04:05 MST"
	RFC1123     = "Mon, 02 Jan 2006 15:04:05 MST"
	RFC1123Z    = "Mon, 02 Jan 2006 15:04:05 -0700" // RFC1123 with numeric zone
	RFC3339     = "2006-01-02T15:04:05Z07:00"
	RFC3339Nano = "2006-01-02T15:04:05.999999999Z07:00"
	Kitchen     = "3:04PM"
	// Handy time stamps.
	Stamp      = "Jan _2 15:04:05"
	StampMilli = "Jan _2 15:04:05.000"
	StampMicro = "Jan _2 15:04:05.000000"
	StampNano  = "Jan _2 15:04:05.000000000"
	DateTime   = "2006-01-02 15:04:05"
	DateOnly   = "2006-01-02"
	TimeOnly   = "15:04:05"
)

这个后面就是time包里面提供的函数 , 类型定义和方法定义了

这些函数和方法使用也很简单, 看函数就大概知道是用来干什么的。 不清楚的还可以查看相关的使用示例,地址 https://pkg.go.dev/time@go1.22.4#pkg-examples

  • func After(d Duration) <-chan Time
  • func Sleep(d Duration) 休眠 函数,这个不用说了,非常常用,用于让程序休眠指定的时间
  • 如:让代码休眠1秒钟:
go 复制代码
time.Sleep(time.Duration(time.Second * 1))
// 这里的 time.Second 是一个常量 他其实就是一个数字,其他几个相关的常量定义如下
// const (
// 	Nanosecond  Duration = 1
// 	Microsecond          = 1000 * Nanosecond
// 	Millisecond          = 1000 * Microsecond
// 	Second               = 1000 * Millisecond
// 	Minute               = 60 * Second
// 	Hour                 = 60 * Minute
// )

这里有一点需要注意, 如果我么传递的时间数字是一个变量,则需要使用 time.Duration(变量名)来转换一下后才可以做运算。

如:

go 复制代码
	seconds := 10
	fmt.Print(time.Duration(seconds)*time.Second) // prints 10s
  • func Tick(d Duration) <-chan Time

type Duration 持续时间类型, 这个也是一个很常用的类型

    • func ParseDuration(s string) (Duration, error)
    • func Since(t Time) Duration
    • func Until(t Time) Duration
    • func (d Duration) Abs() Duration
    • func (d Duration) Hours() float64
    • func (d Duration) Microseconds() int64
    • func (d Duration) Milliseconds() int64
    • func (d Duration) Minutes() float64
    • func (d Duration) Nanoseconds() int64
    • func (d Duration) Round(m Duration) Duration
    • func (d Duration) Seconds() float64
    • func (d Duration) String() string
    • func (d Duration) Truncate(m Duration) Duration
  • type Location 本地时间类型
    • func FixedZone(name string, offset int) *Location
    • func LoadLocation(name string) (*Location, error)
    • func LoadLocationFromTZData(name string, data ]byte) (*Location, error)
    • func (l *Location) String() string
  • type Month
    • func (m Month) String() string
  • type ParseError
    • func (e *ParseError) Error() string

type Ticker 断续器类型

    • ** func NewTicker(d Duration) *Ticker ** 这个也很常用,用于创建一个带通道的每隔一定时间就输出的断续器
      使用示例:

      go 复制代码
      package main
      
      import (
      	"fmt"
      	"time"
      )
      
      func main() {
      	ticker := time.NewTicker(time.Second)
      	defer ticker.Stop()
      	done := make(chan bool)
      	go func() {
      		time.Sleep(10 * time.Second)
      		done <- true
      	}()
      	for {
      		select {
      		case <-done:
      			fmt.Println("Done!")
      			return
      		case t := <-ticker.C:
      			fmt.Println("Current time: ", t)
      		}
      	}
      }

``

    • func (t *Ticker) Reset(d Duration)
    • func (t *Ticker) Stop()

type Time 时间对象类型

    • func Date(year int, month Month, day, hour, min, sec, nsec int, loc *Location) Time
    • func Now() Time 这个函数应该是使用最为频繁的一个了,获取当前时间对象
    • func Parse(layout, value string) (Time, error) 这个是时间解析函数 用于将字符串转换为时间对象。
    • func ParseInLocation(layout, value string, loc *Location) (Time, error)
    • func Unix(sec int64, nsec int64) Time
    • func UnixMicro(usec int64) Time
    • func UnixMilli(msec int64) Time
    • 以下这些都是时间对象的方法,很简单,看名字就知道是干什么用的 这里就不做过多解释了。
    • 有一点提醒大家注意的是,这里的时间对象 Time是标准类型不是*指针类型哦!
    • func (t Time) Add(d Duration) Time
    • func (t Time) AddDate(years int, months int, days int) Time
    • func (t Time) After(u Time) bool
    • func (t Time) AppendFormat(b ]byte, layout string) ]byte
    • func (t Time) Before(u Time) bool
    • func (t Time) Clock() (hour, min, sec int)
    • func (t Time) Compare(u Time) int
    • func (t Time) Date() (year int, month Month, day int)
    • func (t Time) Day() int
    • func (t Time) Equal(u Time) bool
    • func (t Time) Format(layout string) string 时间对象转换为字符串方法
    • func (t Time) GoString() string
    • func (t *Time) GobDecode(data ]byte) error
    • func (t Time) GobEncode() (]byte, error)
    • func (t Time) Hour() int
    • func (t Time) ISOWeek() (year, week int)
    • func (t Time) In(loc *Location) Time
    • func (t Time) IsDST() bool
    • func (t Time) IsZero() bool 这个方法是专门用来判断Time对象是否为空的,注意了,Time对象的零值很特别!!!
    • func (t Time) Local() Time
    • func (t Time) Location() *Location
    • func (t Time) MarshalBinary() (]byte, error)
    • func (t Time) MarshalJSON() (]byte, error)
    • func (t Time) MarshalText() (]byte, error)
    • func (t Time) Minute() int
    • func (t Time) Month() Month
    • func (t Time) Nanosecond() int
    • func (t Time) Round(d Duration) Time
    • func (t Time) Second() int
    • func (t Time) String() string
    • func (t Time) Sub(u Time) Duration
    • func (t Time) Truncate(d Duration) Time
    • func (t Time) UTC() Time
    • func (t Time) Unix() int64
    • func (t Time) UnixMicro() int64
    • func (t Time) UnixMilli() int64
    • func (t Time) UnixNano() int64
    • func (t *Time) UnmarshalBinary(data ]byte) error
    • func (t *Time) UnmarshalJSON(data ]byte) error
    • func (t *Time) UnmarshalText(data ]byte) error
    • func (t Time) Weekday() Weekday
    • func (t Time) Year() int
    • func (t Time) YearDay() int
    • func (t Time) Zone() (name string, offset int)
    • func (t Time) ZoneBounds() (start, end Time)

type Timer 定时器类型

    • func AfterFunc(d Duration, f func()) *Timer
    • *func NewTimer(d Duration) Timer 新建一个在指定的时间后执行一次的定时器函数, 注意这个只会在你指定的时间执行一次, 而 NewTicker创建的 Ticker 则是在你指定的时间间隔上不停地重复执行
    • func (t *Timer) Reset(d Duration) bool
    • func (t *Timer) Stop() bool
  • type Weekday

    • func (d Weekday) String() string
相关推荐
----云烟----4 分钟前
QT中QString类的各种使用
开发语言·qt
lsx2024069 分钟前
SQL SELECT 语句:基础与进阶应用
开发语言
开心工作室_kaic33 分钟前
ssm161基于web的资源共享平台的共享与开发+jsp(论文+源码)_kaic
java·开发语言·前端
向宇it35 分钟前
【unity小技巧】unity 什么是反射?反射的作用?反射的使用场景?反射的缺点?常用的反射操作?反射常见示例
开发语言·游戏·unity·c#·游戏引擎
武子康40 分钟前
Java-06 深入浅出 MyBatis - 一对一模型 SqlMapConfig 与 Mapper 详细讲解测试
java·开发语言·数据仓库·sql·mybatis·springboot·springcloud
转世成为计算机大神1 小时前
易考八股文之Java中的设计模式?
java·开发语言·设计模式
宅小海2 小时前
scala String
大数据·开发语言·scala
qq_327342732 小时前
Java实现离线身份证号码OCR识别
java·开发语言
锅包肉的九珍2 小时前
Scala的Array数组
开发语言·后端·scala
心仪悦悦2 小时前
Scala的Array(2)
开发语言·后端·scala