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)
相关推荐
懒洋洋大魔王5 分钟前
7.Java高级编程 多线程
java·开发语言·jvm
=(^.^)=哈哈哈5 分钟前
Golang如何优雅的退出程序
开发语言·golang·xcode
茶馆大橘9 分钟前
【黑马点评】已解决java.lang.NullPointerException异常
java·开发语言
星辰@Sea13 分钟前
服务注册中心对比及使用场景分析
java·云原生
马剑威(威哥爱编程)16 分钟前
除了递归算法,要如何优化实现文件搜索功能
java·开发语言·算法·递归算法·威哥爱编程·memoization
bug菌¹18 分钟前
滚雪球学SpringCloud[4.1讲]: Spring Cloud Gateway详解
java·spring cloud·微服务
MuseLss38 分钟前
HashMap高频面试知识点
java·开发语言·哈希算法
平头哥在等你38 分钟前
《计算机网络名词解释》
服务器·网络·计算机网络
tyler-泰勒40 分钟前
初始c++:入门基础(完结)
java·开发语言·c++
德迅--文琪1 小时前
SCDN是服务器吗?SCDN防御服务器有什么特点?
运维·服务器