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)
相关推荐
鸠摩智首席音效师13 小时前
linux 系统中 Shutting Down, Restarting, Halting 有什么区别 ?
linux·运维·服务器
CIb0la13 小时前
Linux 将继续不支持 HDMI 2.1 实现
linux·运维·服务器
CoderYanger13 小时前
C.滑动窗口-求子数组个数-越长越合法——2799. 统计完全子数组的数目
java·c语言·开发语言·数据结构·算法·leetcode·职场和发展
C++业余爱好者13 小时前
Java 提供了8种基本数据类型及封装类型介绍
java·开发语言·python
想用offer打牌14 小时前
RocketMQ如何防止消息丢失?
java·后端·架构·开源·rocketmq
皮卡龙14 小时前
Java常用的JSON
java·开发语言·spring boot·json
利刃大大14 小时前
【JavaSE】十三、枚举类Enum && Lambda表达式 && 列表排序常见写法
java·开发语言·枚举·lambda·排序
float_六七14 小时前
Java反射:万能遥控器拆解编程
java·开发语言
han_hanker15 小时前
java 异常类——详解
java·开发语言
源码获取_wx:Fegn089515 小时前
基于springboot + vue健身房管理系统
java·开发语言·前端·vue.js·spring boot·后端·spring