ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

GO语言学习——time标准库

2022-07-23 11:33:12  阅读:171  来源: 互联网

标签:01 语言 err fmt Println time GO now


time标准库

time包

时间类型

时间间隔

定时器

时间格式化 2006-01-02 15:04:05.000

  • 2006:年(Y)
  • 01:月(m)
  • 02:日(d)
  • 15:时(H)
  • 04:分(M)
  • 05:秒(S)
  • 格式化为12小时格式,在格式化布局中添加PM
  • 小数部分保留指定位数写0,省略末尾可能的0写 9
查看代码
    package main
    
    import (
    	"fmt"
    	"time"
    )
    
    // time
    
    func f1() {
    	now := time.Now() // 获取当前时间
    	fmt.Printf("current time:%v\n", now)
    
    	year := now.Year()     // 年
    	month := now.Month()   // 月
    	day := now.Day()       // 日
    	hour := now.Hour()     // 小时
    	minute := now.Minute() // 分钟
    	second := now.Second() // 秒
    	fmt.Println(year, month, day, hour, minute, second)
    	timestamp := now.Unix()  // 秒级时间戳
    	milli := now.UnixMilli() // 毫秒时间戳 Go1.17+
    	micro := now.UnixMicro() // 微秒时间戳 Go1.17+
    	nano := now.UnixNano()   // 纳秒时间戳
    	fmt.Println(timestamp, milli, micro, nano)
    	// 将秒级时间戳转为时间对象(第二个参数为不足1秒的纳秒数)
    	timeObj := time.Unix(timestamp, 22)
    	fmt.Println(timeObj)
    	later := now.Add(time.Hour) // 当前时间加1小时后的时间
    	fmt.Println(later)
    	// Sub 两个时间相减
    	nextYear, err := time.Parse("2006-01-02", "2022-01-01")
    	if err != nil {
    		fmt.Printf("parse time failed, err:%v\n", err)
    		return
    	}
    	d := now.Sub(nextYear)
    	fmt.Printf("d:%v\n", d)
    
    	// ticker := time.Tick(time.Second) //定义一个1秒间隔的定时器
    	// for i := range ticker {
    	// 	fmt.Println(i) //每秒都会执行的任务
    	// }
    
    	// 格式化时间 把语言中时间对象 转换成字符串类型的时间
    	fmt.Println(now.Format("2006-01-02"))
    	fmt.Println(now.Format("2006/01/02 15:04:05"))
    	fmt.Println(now.Format("2006/01/02 03:04:05 PM"))
    	// 小数点后写0,因为有3个0所以格式化输出的结果也保留3位小数
    	fmt.Println(now.Format("2006/01/02 15:04:05.000")) //
    	// 小数点后写9,会省略末尾可能出现的0
    	fmt.Println(now.Format("2006/01/02 15:04:05.999"))
    
    	// 解析字符串格式的时间
    	// 在没有时区指示符的情况下,time.Parse 返回UTC时间
    	timeObj, err = time.Parse("2006-01-02", "2022-07-15")
    	if err != nil {
    		fmt.Println(err)
    		return
    	}
    	fmt.Println(timeObj)
    	fmt.Println(timeObj.Unix())
    
    	// time.Sleep(15 * time.Second)
    	fmt.Println("sleep 10 seconds")
    	n := 10
    	time.Sleep(time.Duration(n) * time.Second)
    	fmt.Println("sleep 10 seconds with sleep time")
    }
    
    // 时区
    func f2() {
    	now := time.Now() // 本地的时间
    	fmt.Println(now)
    	// 明天的这个时间
    	// 按照指定格式去解析一个字符串格式的时间
    	time.Parse("2006-01-02 15:04:05", "2022-07-18 15:04:05")
    	// 按照东八区的时区和格式去解析一个字符串格式的时间
    	loc, err := time.LoadLocation("Asia/Shanghai")
    	if err != nil {
    		fmt.Printf("load loc failed, err:%v\n", err)
    		return
    	}
    	// 安装指定时区解析时间
    	timeObj, err := time.ParseInLocation("2006-01-02 15:04:05", "2022-07-17 11:04:05", loc)
    	if err != nil {
    		fmt.Printf("parse time failed, err:%v\n", err)
    		return
    	}
    	fmt.Println(timeObj)
    	// 时间对象相减
    	td := timeObj.Sub(now)
    	fmt.Println(td)
    }
    
    func main() {
    	// f1()
    	f2()
    }
    

标签:01,语言,err,fmt,Println,time,GO,now
来源: https://www.cnblogs.com/QiaoPengjun/p/16511222.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有