测试小站: 处理网 回收帮 培训网 富贵论坛 老富贵论坛

go语言基础包time的知识点总结

  time包在开发中还是用的比较多的,这里简单的总结一下,在开发工作中常用的函数

  time包中常用的数据类型Location时区类型Time时间类型Duration时段类型Timer定时器类型Ticker循环定时类型Weekday和Month类型time包中time类型下常用的方法time.Now():返回当前时间time.Now().Format():格式化时间,在go中使用2006-01-02 15:04:05来表示格式字符串time.Parse():给定时间字符串,返回指定格式的time类型time.ParseInLocation():给定时间字符串和时区,返回指定格式的time类型time.Now().Unix():返回当前时间戳time.Unix():给定时间戳返回默认的时间格式time.Now().UTC()返回UTC时区的时间,相差8小时time.Now().In():可以设置时区time.Now().Year():获取年time.Now().Add():添加时间time.Now().AddDate():可以添加年月日的时间

  package main

  func main() {

  //获取当前时间

  //t1 :=time.Now()

  ////给定字符串转成time类型,如果字符串不解析失败,会返回err

  //t :="2021-11-06 13:26:56"

  //t1,err :=time.Parse("2006-01-02 15:04:05",t)

  ////给定字符串转成time类型,可以指定时区,如果字符串不解析失败,会返回err

  //loc,_ :=time.LoadLocation("GMT")//注意这里的名字是需要大写的

  //t1,err=time.ParseInLocation("2006-01-02 15:04:05",t,loc)

  //

  //fmt.Println(err)

  //fmt.Println(t1)

  //获取当前时间戳

  //unixtime:=time.Now().Unix()

  //fmt.Println(unixtime)

  ////时间戳转成时间格式

  //unix :=time.Unix(unixtime,0)

  //fmt.Println(unix)

  //使用本地时区,获取当前时间

  //t :=time.Now().Local()

  //使用UTC时区,获取当前时间,相差8小时

  //t=time.Now().UTC()

  //指定时区

  //loc,_:=time.LoadLocation("UTC")

  // t=t.In(loc)

  //fmt.Println(t)

  //获取年月日,时分秒

  //t :=time.Now()

  //y :=t.Year()

  //m :=t.Month()

  //d :=t.Day()

  //h :=t.Hour()

  //M :=t.Minute()

  //s :=t.Second()

  //两个时间比较

  //t1 :=time.Now()

  //t2,_ :=time.Parse("2006-01-02 15:04:05","2022-12-01 12:12:12")

  ////t1时间是否在t2之前,如果是返回真,否则为false

  //fmt.Println(t1.Before(t2))

  ////t1时间是否在t2之后,如果是返回真,否则为false

  //fmt.Println(t1.After(t2))

  ////t1时间是否与t2相等,如果是返回真,否则为false

  //fmt.Println(t1.Equal(t2))

  t :=time.Now()

  fmt.Println(t)

  //当前时间加5分钟

  //t=t.Add(time.Minute*5)

  //当前时间加具体时间日期

  t=t.AddDate(2,0,0)

  fmt.Println(t)

  fmt.Println(t.Format("2006-1-2"))

  }

  time包中Duration类型下常用的方法time.ParseDuration解析一个时间段字符串常用格式:h,m,s,ms,us,nstime.Since():返回从时间t到现在的时间间隔

  //解析时间段字符串

  //dur ,err :=time.ParseDuration("1.5h")

  //fmt.Println(dur,err)

  //t :=time.Now()

  //time.Sleep(time.Second)

  ////从t时间到现在的时间间隔

  //dur :=time.Since(t)

  ////将时间段转化成小时

  //fmt.Println(dur.Hours())

  ////将时间段转化成分钟

  //fmt.Println(dur.Minutes())

  ////将时间段转化成秒数

  //fmt.Println(dur.Seconds())

  time包中Timer类型下常用的方法

  这个timer定时器,在go协程通信时,使用的会比较多,常用作超时处理

  NewTimer():创建一个Timer定时器AfterFunc():创建一个Timer匿名定时器Reset():定时器重置Stop():停止定时器

  package main

  import (

  "fmt"

  "time"

  )

  func main() {

  //创建一个5秒的定时器

  //ter :=time.NewTimer(time.Second*5)

  //c :=<-ter.C//这里会阻塞

  //

  //fmt.Println(c)

  //创建一个3秒的定时器

  //ter2 :=time.After(time.Second*3)

  //c2 :=<-ter2

  //fmt.Println(c2)

  //time3 :=time.NewTimer(time.Second*3)

  //go func() {

  //<-time3.C

  //fmt.Println("定时器执行了")

  //}()

  //

  //time.Sleep(time.Second*5)

  //stop :=time3.Stop()

  //if stop{

  //fmt.Println("time3 停止了")

  //}

  }

  time包中Ticker类型下常用的方法

  //Ticker类型的定时是同期循环的定时器

  package main

  import (

  "fmt"

  "time"

  )

  func main() {

  //ticker定时器,每3秒打印一次

  ticker :=time.NewTicker(time.Second*3)

  i :=0

  for{

  <-ticker.C

  i++

  fmt.Println("我打印了",i)

  if i==10{

  ticker.Stop()

  break

  }

  }

  }

  喜欢的点个赞吧!!!!!

posted @ 2021-12-20 15:57  linjingyg  阅读(280)  评论(0)    收藏  举报