Go语言进阶 --- Time包的使用

Time包的使用

常用方法介绍

获取当前时间

  • time.Now() 方法返回值是Time类型的值,直接输出返回值,得到的结果是默认格式下的时间戳

  • 代码展示

    go 复制代码
    //获取当前时间
    	nowTime := time.Now()
    	fmt.Println(nowTime)

获取指定的时间

  • time.Data()方法的参数包含很多值,包括年月日,时分秒,毫秒微秒,时区

  • 返回值是一个指定时间的时间戳,一般用于创建时间戳,用于参与判断等

  • 代码展示

    go 复制代码
    	AppointTime := time.Date(2020, 11, 25, 0, 0, 0, 0, time.Local)//time.Local
    	fmt.Println(AppointTime)

指定时间输出格式/解析时间字符为时间戳

复制代码
  1.使用Time类型中的Format("格式模版")方法转化
  2.模版的日期必须是固定的: 06-1-2-3-4-5(年 月 日 时 分 秒)
  • 指定时间的输出格式,目的是方便日志记录以及自己查看出现问题的地方

  • 主要函数

    • Time类型的Format()方法
    • 方法参数: 时间格式模版
    • 模版的日期必须是固定的: 06-1-2-3-4-5(年 月 日 时 分 秒)
    • 意思是说,年的末尾要是6,月是1,日是2...以此类推
    • 例如格式:
      • 2006年01月02日 03时04分05秒
      • 2006-01-02 ,03-04-05
      • 2006年01月02日 03:04:05
  • 代码展示

    go 复制代码
    	time1 := time.Now()
    	FString := time1.Format("2006年01月02日 03时04分05秒")
    	fmt.Println(FString)
复制代码
  //解析时间字符串为时间戳
  1.使用time包中的Parse("格式模版")
  2.格式模版必须和需要解析字符串的模版一致
  • 将获得的时间字符串转换成时间戳,方便进行运算,比较等...

  • 主要函数

    • Time类型的Parse()方法
    • 方法参数: 1.模版格式 2.需要转化的时间字符串
    • 格式模版必须和需要解析字符串的模版一致
  • 代码展示

    go 复制代码
    	time2 := "2023年10月09日 01时10分12秒"
    	PTime, err := time.Parse("2006年01月02日 03时04分05秒", time2)
    	if err != nil {
    		fmt.Println(err)
    	}
    	fmt.Println(PTime)

单独获取时间

  • 直接代码展示
go 复制代码
//单独获取时间
	time3 := time.Now()
	//获取年
	year := time3.Year()
	//获取月
	month := time3.Month()
	//获取日
	day := time3.Day()
	//获取时
	hour := time3.Hour()
	//获取分
	minute := time3.Minute()
	//获取秒
	second := time3.Second()
	//获取微秒
	nanosecond := time3.Nanosecond()
	//获取时区
	location := time3.Location()
	fmt.Println(year, month, day, hour, minute, second, nanosecond, location)

	//获取年月日
	time3.Date()
	//获取时分秒
	time3.Clock()
	//获取星期
	time3.Weekday()
	//获取今年过去的时间
	time3.YearDay()

添加时间

  • 在获取的时间戳中添加或减少事时间

  • 方法

    • Time类中的Add()方法,参数是一个数值,默认是距离时间戳多少纳秒
    • Time类中的AddDate()方法,参数是年月日
    • 注意: 添加时间(正数表示往后添加,负数表示往前添加)
  • 代码展示

    go 复制代码
    fmt.Println("添加之后的时间", timeData.Add(1*time.Second)) //默认单位是纳秒,也可以自己添加
    	fmt.Println("添加后的时间", timeData.AddDate(1, 2, 3))

计算时间差

  • 方法:

    • Time类中的Sub()方法
    • 参数是另外一个Time类型的值
    • 返回值是 时间差 ,单位是纳秒
  • 代码展示

    go 复制代码
    fmt.Println("时间的间隔: ", timeData.Sub(time.Now()))

利用时间戳制作随机数的种子

  • 使用不断变化的时间戳,制作随机数的种子,使得获取到的随机数更加随机

  • 代码展示

go 复制代码
//随机数值
	rand.NewSource(time.Now().Unix())
	fmt.Println("随机数值:", rand.Intn(10)-1)
相关推荐
daidaidaiyu2 小时前
ThingsBoard 集群的核心逻辑源码分析
java
我可能是个假开发3 小时前
FTP Unicode 文件名导致 `550` 的问题分析与解决方案
java·开发语言·spring
caoerzhong3 小时前
中小企业上 WMS 该先上哪几块:JeeWMS 开源 Java 仓库管理系统的分批上线清单
java·python·开源
正在走向自律3 小时前
AI数据分析与可视化:从基础到应用实践
服务器·人工智能·python·机器学习·数据分析·pandas
OnlineProxy4 小时前
亚马逊多账号运营:如何在规避“关联封号”风险的同时实现电商规模化扩张
服务器·数据库·redis
【JAVA】玩家4 小时前
Spring核心原理全解析:从零到生产实战
java·后端·spring
Wang's Blog4 小时前
Java框架 SpringCloud 快速入门: 实现 Feign 最佳实践(抽取方式)
java·spring cloud
谢亮_vipxieliang5 小时前
Go map与结构体的正确使用
开发语言·golang·哈希算法
91刘仁德5 小时前
IP协议详解:从IP协议头到网段划分、路由与NAT
linux·服务器·网络·网络协议·tcp/ip
辻弋2015 小时前
五年前的旅行视频糊成马赛克?Video2X用Real-ESRGAN逐帧重建细节,但只支持Windows、集显用户建议直接放弃
服务器·数据库·windows·游戏引擎·电脑