golang time包和日期函数

server/2025/3/19 17:54:52/

1.简介

在程序中日期和时间是我们经常会用到的,在go中time包提供了时间的显示和测量函数。

2.获取当前时间 

通过time.Now()函数获取当前时间对象,然后获取时间对象的年月日时分秒等值。

    now := time.Now()fmt.Printf("now=%v type=%T\n", now, now)fmt.Println("年:", now.Year())fmt.Println("月:", int(now.Month()))fmt.Println("月:", now.Month())fmt.Println("日:", now.Day())fmt.Println("时:", now.Hour())fmt.Println("分:", now.Minute())fmt.Println("秒:", now.Second())

结果:注意now.Month() 返回的是March ,int(now.Month())返回的是阿拉伯数字3.

now=2025-03-14 16:45:06.0905758 +0800 CST m=+0.002147901 type=time.Time
年: 2025
月: 3
月: March
日: 14
时: 16
分: 45
秒: 6

3.格式化日期

方法一:%02d表示宽度为2,如果宽度不足2就补上0.

    now := time.Now()timeFormat := fmt.Sprintf("%d-%02d-%02d %02d:%02d:%02d\n", now.Year(), now.Month(),                     now.Day(), now.Hour(), now.Minute(), now.Second())fmt.Println(timeFormat) //2025-03-14 17:41:57

方法二:Format方法格式化输出日期字符串

    now := time.Now()   fmt.Println(now.Format("2006-01-02 03:04:05")) //2025-03-14 05:46:50fmt.Println(now.Format("2006/01/02 03:04:05")) //2025/03/14 05:46:50fmt.Println(now.Format("03:04:05"))            //05:46:50fmt.Println(now.Format("2006-01-02 15:04:05")) //2025-03-14 17:46:50

注意:2006年1月2好15点04分为格式模板,传言时golang出生的日子。

24小时制:15:04:05

12小时制:03:04:05

4.获取当前的时间戳

时间戳时字1970年1月1日(08:00:00GMT)至当前时间的总毫秒数。

    now := time.Now()//获取当前时间戳fmt.Println(now.Unix())      //秒  1741946106fmt.Println(now.UnixMilli()) //毫秒  1741946106150fmt.Println(now.UnixMicro()) //微秒  1741946106150703fmt.Println(now.UnixNano())  //纳秒  1741946106150703600

5.把指定日期转换成时间戳

//	指定日期转时间戳time1 := "2024-02-02 15:02:03"  //指定字符串timeTemPlate := "2006-01-02 15:04:05" //转换模板t, _ := time.ParseInLocation(timeTemPlate, time1, time.Local)fmt.Println(t.Unix()) //1706857323

6.把时间戳转换成日期

	var sec int64 = 1741924654sectime := time.Unix(sec, 0)                       //秒转日期对象,第二个参数写0fmt.Println(sectime.Format("2006/01/02 03:04:05")) //2025/03/14 11:57:34var nsec int64 = 1741946106150703600nsecTime := time.Unix(0, nsec)//纳秒转日期对象,第一个参数写0fmt.Println(nsecTime.Format("2006/01/02 03:04:05")) //2025/03/14 05:55:06

7.时间戳操作函数

    //add 我们在日常的编程过程中可能会遇到要求时间+时间间隔后的需求,go语言提供了add方法now := time.Now()later := now.Add(time.Hour * 24)fmt.Printf("当前时间%v号,24小时后的时间%v号\n", now.Day(), later.Day()) //当前时间14号,    24小时后的时间15号//求两个时间之间的差fmt.Println(later.Sub(now))//判断连个时间是否相同,会考虑时区的影响,因此不同时区标准的时间也可以正确的比较。//本方法和用t==u不同,这种方法还会比较地点和时区信息。fmt.Println(later.Equal(now))//判断是否在该时间点之前,boolfmt.Println(later.Before(now))//判断是否在该时间点之后,boolfmt.Println(later.After(now))

8.定时器 

方式一:使用time.NewTicker(时间间隔)来设置定时器

    ticker := time.NewTicker(time.Millisecond * 100) //0.1秒执行一次n := 0for i := range ticker.C {fmt.Println(i)n++if n > 3 {ticker.Stop()break}}fmt.Println("结束了")

结果:

2025-03-15 16:15:09.8342347 +0800 CST m=+0.107599401
2025-03-15 16:15:09.9436426 +0800 CST m=+0.217007301
2025-03-15 16:15:10.0378554 +0800 CST m=+0.311220101
2025-03-15 16:15:10.13826 +0800 CST m=+0.411624701
结束了

方式二:time.Sleep(time.Second)来实现定时器

    n := 0for {n++fmt.Println("执行定时任务")time.Sleep(time.Second)//1秒执行一次if n > 5 {break}}fmt.Println("结束了")

结果:

执行定时任务
执行定时任务
执行定时任务
执行定时任务
执行定时任务
执行定时任务
结束了


http://www.ppmy.cn/server/176305.html

相关文章

《Python实战进阶》No25: 自动化测试:unittest 与 pytest 的对比

No25: 自动化测试:unittest 与 pytest 的对比 摘要 在现代软件开发中,自动化测试是确保代码质量、减少回归错误的重要手段。Python 提供了多个强大的单元测试框架,其中 unittest 和 pytest 是最主流的两个选择。本文将深入对比这两个框架的特…

【论文笔记】RAQ-VAE: Rate-Adaptive Vector-Quantized Variational Autoencoder

目录 笔记作者1.引言2.背景3.Rate-Adaptive VQ-VAE3.1 基于模型的 Rate-Adaptive VQ-VAE3.2数据驱动的自适应码率 VQ-VAE 4.实验4.1 视觉任务的主要结果4.2 详细分析 5 .结论 笔记作者 吴思雨,女,西安工程大学电子信息学院,2023级研究生&…

3.数据探索与可视化基本图形(直方图、箱线图、散点图)——Python数据挖掘代码实践

文章目录 一、 基本概念与专业术语解析1.1 数据分布、相关性与多维数据1.2 专业术语解释与图形介绍 二、 直方图2.1 使用 Matplotlib 绘制基础直方图2.2 使用 Seaborn 绘制直方图 密度曲线2.3 不同 bin 规则对比 三、 箱线图3.1 理论基础3.2 绘制箱线图3.2.1 使用 Matplotlib …

【干货】Docker 在自动化测试和性能测试中的应用

引言 在现代软件测试领域,Docker 已经成为提升自动化测试和性能测试效率的重要工具。它不仅能提供一致的测试环境,还能大幅减少配置和维护成本。本文将深入探讨 Docker 在自动化测试和性能测试中的应用场景、优势及实践方案。 1. 为什么选择 Docker&am…

RunningHub:瞄准图形音视频,做AIGC应用共创平台,它有何特点?

2025第一季度,文生图行业进步神速。 数科星球原创 作者丨苑晶 编辑丨大兔 2025第一季度,文生图行业进步神速。 直观层面,图形的拟真度飞速提升。由此,其在广告、宣传、影视制作、游戏开发等领域的价值得到了空前开发。 而AI的…

[快乐学坊management_1] With Cursor | Mysql设计 | 服务接口设计与开发

目录 数据库设计流程 三张表 测试 接口设计 部门管理接口文档 1. 查询所有部门 2. 新增部门 ⭕3. 根据ID查询部门 4. 修改部门 5. 删除部门 (部门分页条件查询) 错误响应示例 接口设计规范 服务端开发 接口开发 数据库设计流程 01 明确业…

xss注入实验(xss-lab)

xss-lab 第一关 代码&#xff1a;<Script>alert(1)</Script> 第二关 代码&#xff1a;1"><ScRipt>alert(1)</ScRipt> 第三关 代码&#xff1a; onclick javascript:alert(1)// 第四关 代码&#xff1a;" onclick "javascript:a…

力扣——146.LRU缓存

题目链接&#xff1a; https://leetcode.cn/problems/lru-cache/solutions/259678/lruhuan-cun-ji-zhi-by-leetcode-solution/?envTypestudy-plan-v2&envIdtop-100-liked 题目描述&#xff1a; 思路&#xff1a; 提到key-value一定有map&#xff1b;要实现最近最少使用…