golang time包和日期函数

news2025/3/16 21:36:05

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:50
	fmt.Println(now.Format("2006/01/02 03:04:05")) //2025/03/14 05:46:50
	fmt.Println(now.Format("03:04:05"))            //05:46:50
	fmt.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())      //秒  1741946106
	fmt.Println(now.UnixMilli()) //毫秒  1741946106150
	fmt.Println(now.UnixMicro()) //微秒  1741946106150703
	fmt.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 = 1741924654
	sectime := time.Unix(sec, 0)                       //秒转日期对象,第二个参数写0
	fmt.Println(sectime.Format("2006/01/02 03:04:05")) //2025/03/14 11:57:34
	var nsec int64 = 1741946106150703600
	nsecTime := time.Unix(0, nsec)//纳秒转日期对象,第一个参数写0
	fmt.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))
	//判断是否在该时间点之前,bool
	fmt.Println(later.Before(now))
	//判断是否在该时间点之后,bool
	fmt.Println(later.After(now))

8.定时器 

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

    ticker := time.NewTicker(time.Millisecond * 100) //0.1秒执行一次
	n := 0
	for 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 := 0
	for {
		n++
		fmt.Println("执行定时任务")
		time.Sleep(time.Second)//1秒执行一次
		if n > 5 {
			break
		}
	}
	fmt.Println("结束了")

结果:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2316262.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学习springboot 的自动配置原理

前言 为什么要学习springboot 的自动配置原理? 1学习 自定义成starter 的前提 实际开发中,我们如果定义公共的组件给团队使用,为了让他们使用方便就自定义成starter。而想要学习starter ,就要先了解springboot 的自动配置原理 2 面试需要 了…

排错 -- FISCO BCOS区块链网络 -- 3. 编译智能合约

文章为FISCO BCOS2.0搭建区块链平台中发现的问题与总结,出错原因不唯一 ,解决办法不唯一 目前社区缺少完整,稳定的搭建平台和教程 ,欢迎各位及时补充,如有错误请及时评论纠正! 感谢各位搜索到这里&#…

ffmpeg 添加毫秒时间戳

网上有好多添加时间水印的,默认是到秒,而我需要到毫秒,查了一下,没有找到更好的方案,下面是自己实现的方案,可以显示到毫秒。如果有更好的方案,欢迎讨论 ffmpeg -i video.mp4 -vf "drawte…

centos7上安装Docker

文章目录 **1. 使用华为云镜像源替换Docker仓库****2. 安装Docker CE****3.更换docker镜像源-使用华为云的docker镜像源****4.补充:docker的使用****5.补充:删除docker的步骤** 1. 使用华为云镜像源替换Docker仓库 步骤: 删除无效的Docker仓…

【Linux内核系列】:文件系统收尾以及软硬链接详解

🔥 本文专栏:Linux 🌸作者主页:努力努力再努力wz 💪 今日博客励志语录: 世界上只有一种个人英雄主义,那么就是面对生活的种种失败却依然热爱着生活 内容回顾 那么在之前的学习中,我们…

视频理解之Actionclip(论文宏观解读)

配合解读代码解读 1.研究背景 1. 视频行为识别的重要性 视频行为识别是视频理解领域的核心任务之一,旨在通过分析视频内容来识别和分类其中的人物行为或活动。这一任务在多个领域具有重要的应用价值,例如智能监控、人机交互、自动驾驶、医疗健康等。随…

navicat16 升级到 navicat17 之后原来的连接找不到了 mac用户

版本16的路径 注意把对应的路径改成自己的用户名 /Users/自己的用户名/Library/Application Support/PremiumSoft CyberTech/Navicat CC/Common/Settings 版本17的路径 /Users/自己的用户名/Library/Containers/com.navicat.NavicatPremium/Data/Library/Application Suppor…

Altium Designer——CHIP类元器件PCB封装绘制

文章目录 PCB封装组成元素:焊盘的属性 SS34肖特基二极管SMA(DO-214AC)封装绘制资料:步骤:1.绘制焊盘:用到的快捷键:资料: 2.绘制丝印:用到的快捷键:资料: PCB封装组成元素…

【一起来学kubernetes】12、k8s中的Endpoint详解

一、Endpoint的定义与作用二、Endpoint的创建与管理三、Endpoint的查看与组成四、EndpointSlice五、Endpoint的使用场景六、Endpoint与Service的关系1、定义与功能2、创建与管理3、关系与交互4、使用场景与特点 七、Endpoint的kubectl命令1. 查看Endpoint2. 创建Endpoint3. 编辑…

《AI浪潮中的璀璨新星:Meta Llama、Ollama与DeepSeek的深度剖析》:此文为AI自动生成

《AI浪潮中的璀璨新星:Meta Llama、Ollama与DeepSeek的深度剖析》:此文为AI自动生成 引言:AI 大模型的群雄逐鹿时代 在科技飞速发展的当下,AI 大模型领域已成为全球瞩目的焦点,竞争激烈程度堪称白热化。从 OpenAI 推出…

LVGL移植到6818开发板

一、移植步骤 1.lv_config.h 配置文件启动 framebuffer 2、lv_config.h 配置文件关闭SDL 2.修改main.c 去掉SDL输入设备 3.修改Makefile 文件启动交叉编译 去掉警告参数 去掉SDL库 4.交叉编译代码 make clean #清空 ⭐ 必须要清空一次再编译! 因为修改了 lv_con…

UE4-UE5虚幻引擎,前置学习一--Console日志输出经常崩溃,有什么好的解决办法

有些差异 这么牛逼的引擎,居然有这种入门级别的问题,一触发清理,大概率(80%)会崩溃 无论虚幻5还是UE4都有这个问题,挺烦人的 实在忍不了了,这次,今天 就想问问有什么好的处理方法么?&#x…

(全)2024下半年真题 系统架构设计师 综合知识 答案解析01

系统架构设计师第二版教程VIP课程https://edu.csdn.net/course/detail/40283 操作系统 下列选项中不能作为预防死锁措施的是 。 A. 破坏“循环等待"条件 B. 破坏“不可抢占”条件 C. 破坏“互斥”条件 D. 破坏“请求和保持”条件 答案:C 解析&…

Linux系统之less命令的基本使用

Linux系统之less命令的基本使用 一、less命令介绍二、less命令的使用帮助2.1 less命令的帮助信息2.2 less命令主要选项解释 三、less命令的基本使用3.1 查看文件内容3.2 结合管道使用 四、注意事项 一、less命令介绍 在Linux和Unix类操作系统中,文件浏览是一项常见的…

【微知】plantuml在泳道图中如何将多个泳道框起来分组并且设置颜色?(box “浏览器“ #LightGreen endbox)

泳道分组并且着色 分组用 box和endbox ,颜色用#xxx,标注用"xxx" box "浏览器" #LightGreen participant "浏览器1" as Browser participant "浏览器2" as Browser2 endboxparticipant "服务端" as …

C#生产型企业ERP系统管理软件PCB行业ERP进销存MRP管理系统BOM管理

背景 本软件为为苏州某生产型电子科技企业开发的ERP管理软件。 功能说明 希哲管理系统v1.0是一款在流览器上使用的企业管理软件,使用上与客户端版的优势是: 1.安装更新部署方便,只需服务器部署了软件,其它客户端的用户无需安装&am…

文件系统 linux ─── 第19课

前面博客讲解的是内存级文件管理,接下来介绍磁盘级文件管理 文件系统分为两部分 内存级文件系统 : OS加载进程 ,进程打开文件, OS为文件创建struct file 和文件描述符表 ,将进程与打开的文件相连, struct file 内还函数有指针表, 屏蔽了底层操作的差异,struct file中还有内核级…

射频前端模块(FEM)的基本原理与架构:从组成到WiFi路由器的应用

射频前端模块(FEM)的基本原理与架构:从组成到WiFi路由器的应用 一、FEM是什么? 射频前端模块(Front-End Module, FEM)是无线通信系统中负责处理射频信号的核心组件。它将多个关键电路集成在一个模块中,包括功率放大器(PA)、低噪声放大器(LNA)、射频开关(Switch)、…

qemu分析之 KVM_EXIT_MMIO

基于qemu-2.8.1 address_space_rw 函数作用 这是QEMU内存子系统的核心函数,负责分块处理跨MemoryRegion的内存读取操作。主要场景包括: 处理跨越多个MemoryRegion的连续内存读取区分RAM直接访问与MMIO设备模拟处理不同位宽(1/2/4/8字节&am…

OSI 七层网络模型

文章目录 OSI 七层模型应用层表示层会话层传输层网络层数据链路层物理层 TCP/IP 四层模型应用层传输层网络层数据链路层 TCP/IP 特点OSI 和 TCP/IP 两者关系通信过程及相关协议常用协议及端口号常用协议分类参考链接 OSI 七层模型 七层模型,亦称OSI(Ope…