写点什么

【一 Go 到底】第二十四天 --- 时间和日期函数

作者:指剑
  • 2022-10-24
    重庆
  • 本文字数:1481 字

    阅读完需:约 5 分钟

【一Go到底】第二十四天---时间和日期函数

一、简介

  1. 因为日期和时间相关的函数存在于 time 包中,所以需要导入 time 包

  2. time.Time 类型 ,表示时间 ---> 详见案例解析

  3. 获取到当前时间的方法 ---> now := time.Now() // now 类型为 time.Time

  4. 格式化时间日期(详见案例)

  5. 法一 printf

  6. 法二 printf(now.FOrmat("2006-01-02 15:04:05"))

  7. 时间常量 :在程序中获得指定的时间单位的时间


const {  Nanosecond Duration = 1 // 纳秒  Microseond = 1000 * Nanosecond // 微妙  Milliseond = 1000 * Microseond // 毫秒  Second     = 1000 * Milliseond // 秒  Minute     = 60 * Second //分  Hour       = 60 * Minute  //时}
复制代码


  1. 休眠 Sleep()

  2. 获取当前 unix 时间戳和 unixnano 时间戳(用于获取随机数字)

二、案例解析

package main
import ( "fmt" "time")
func main() { // 日期和时间相关函数和方法的使用
// 1.获取当前时间 now := time.Now() // now = 2022-10-16 12:33:25.9941447 +0800 CST m=+0.002308001, type = time.Time fmt.Printf("now = %v, type = %T", now, now)
// 去除now中的年 月 日 时分秒 fmt.Printf("年 = %v\n", now.Year()) fmt.Printf("月 = %v\n", now.Month()) fmt.Printf("月 = %v\n", int(now.Month())) fmt.Printf("日 = %v\n", now.Day()) fmt.Printf("时 = %v\n", now.Hour()) fmt.Printf("分 = %v\n", now.Minute()) fmt.Printf("秒 = %v\n", now.Second())
// 格式化时间 fmt.Printf("当前年月日 %d-%d-%d %d:%d:%d \n", now.Year(), now.Month(), now.Day(), now.Hour(), now.Minute(), now.Second()) // 把字符串给一个变量 dataStr := fmt.Sprintf("当前年月日 %d-%d-%d %d:%d:%d \n", now.Year(), now.Month(), now.Day(), now.Hour(), now.Minute(), now.Second())
fmt.Printf("dataStr = %v", dataStr)
// 格式化第二种写法 // 2006/01/02 15:04:05 这个字符串是固定的,必须这样写 // 数字不能乱改,间隔可以改 // 可按需求组合 fmt.Printf(now.Format("2006/01/02 15:04:05")) // 2022/10/16 14:38:34 fmt.Println() fmt.Printf(now.Format("2006-01-02")) // 2022-10-16 fmt.Println() fmt.Printf(now.Format("15:04:06")) // 14:38:22 fmt.Println()
// 只取月份 fmt.Printf(now.Format("01")) fmt.Println() // 只取年 fmt.Printf(now.Format("2006")) fmt.Println()
// 时间的常量应用
// // 结合Sleep使用 // // 每个一秒打印一个数字,打印到100就退出 // i := 0 // for { // i++ // fmt.Println("i = ", i) // //休眠 // time.Sleep(time.Second) // if 1 == 100 { // break // } // }
// 每隔0.1秒打印一个数字,到100时退出 i := 0 for { i++ fmt.Println("new i = ", i) // 0.1秒 = Millisecond * 100 time.Sleep(time.Millisecond * 100) if i == 100 { break } }
// Unix 和 UnixNano
fmt.Printf("Unix 时间戳:=%v , UnixNano时间戳= %v\n", now.Unix(), now.UnixNano()) // Unix 时间戳:=1665904263 , UnixNano时间戳= 1665904263830448500 }
复制代码

三、最佳实践(统计函数执行时间)


package main
import ( "fmt" "strconv" "time")
func test() { str := "" for i := 0; i < 100000; i++ { str += "hello" + strconv.Itoa(i) }}
func main() { start := time.Now().Unix()
test()
end := time.Now().Unix()
fmt.Printf("test函数执行时间为: %v", end-start)}
复制代码


发布于: 刚刚阅读数: 3
用户头像

指剑

关注

InfoQ签约作者 2022-07-13 加入

AWS社区建设者,AWS学生大使,微软学生大使,阿里云签约作者,Info Q签约作者,CSDN博客专家,华为云云享专家,OPS社区创始成员

评论

发布
暂无评论
【一Go到底】第二十四天---时间和日期函数_Go_指剑_InfoQ写作社区