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 分钟前
第四十六: channel 高级使用
java·前端·数据库
Li_yizYa17 分钟前
Redis-常见数据类型及应用场景
java·数据库·redis
DO your like17 分钟前
手机热点搭建个人局域网
服务器·智能手机·智能路由器
麦兜*24 分钟前
【springboot】图文详解Spring Boot自动配置原理:为什么@SpringBootApplication是核心?
android·java·spring boot·spring·spring cloud·tomcat
rabbit_pro36 分钟前
Java使用Mybatis-Plus封装动态数据源工具类
java·python·mybatis
期待のcode42 分钟前
Java虚拟机类加载机制
java·开发语言
短剑重铸之日1 小时前
《SpringBoot4.0初识》第四篇:原生镜像
java·原生镜像·springboot4.0
程序员欣宸1 小时前
LangChain4j实战之十二:结构化输出之三,json模式
java·人工智能·ai·json·langchain4j
咕噜企业分发小米1 小时前
直播云服务器安全防护有哪些最新的技术趋势?
运维·服务器·安全
空城雀1 小时前
python精通连续剧第一集:简单计算器
服务器·前端·python