Golang time 包以及日期函数

news2025/1/10 15:25:04

time 包

在 golang 中 time 包提供了时间的显示和测量用的函数。

time.Now()获取当前时间

可以通过 time.Now()函数获取当前的时间对象,然后获取时间对象的年月日时分秒等信息。
示例代码如下:
package main

import (
	"fmt"
	"time"
)

func main() {

	timeDemo := time.Now()
	fmt.Println(timeDemo)

	year := timeDemo.Year()
	month := timeDemo.Month()
	day := timeDemo.Day()
	hour := timeDemo.Hour()
	minute := timeDemo.Minute()
	second := timeDemo.Second()

	fmt.Printf("%d-%02d-%02d %02d:%02d:%02d", year, month, day, hour, minute, second)


}

%02d 中的 2 表示宽度,如果整数不够 2 列就补上 0

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

时间类型有一个自带的方法Format进行格式化,

需要注意的是Go语言中格式化时间模板不是常见的Y-m-d H:M:S

而是使用Go的诞生时间2006年1月2号15点04分(记忆口诀为2006 1 2 3 4)

2006  年

01  月

02  日

03  时   12小时制     写成:15   表示   24小时制

04  分

05  秒

package main

import (
	"fmt"
	"time"
)

func main() {

//第一种写法24小时制
	timeDemo := time.Now()
	layOut := "2006-01-02 15:04:05"
	var timi = timeDemo.Format(layOut)
	fmt.Printf(timi)
	fmt.Print("\n--------------------------------\n")
//第二种写法12小时制
	timeObj := time.Now()
	var str = timeObj.Format("2006/01/02 03:04:05")
	fmt.Println(str) 


}

获取当前的时间戳

时间戳是自 1970 1 1 日(08:00:00GMT)至当前时间的总毫秒数。它也被称为 Unix
间戳( UnixTimestamp )。
基于时间对象获取时间戳的示例代码如下:
package main

import (
	"fmt"
	"time"
)


func main() {

	timeDemo := time.Now()
	//获取当前的时间戳 (毫秒)
	timeStep := timeDemo.Unix()
	fmt.Println("当前毫秒时间戳为",timeStep)
	//纳秒时间戳
	timeNastep := timeDemo.UnixNano()
	fmt.Println("当前纳秒时间戳为",timeNastep)
}

时间戳转换为日期字符串(年--日 时::秒) 

使用 time.Unix() 函数可以将时间戳转为时间格式。

 

package main

import (
	"fmt"
	"time"
)

//时间戳转换成日期字符串
func main() {
	timeStep  := int64(1690188111) 
	timeDemo := time.Unix(timeStep,0)
	layOut := "2006-01-02 15:04:05"
	var timi = timeDemo.Format(layOut)
	fmt.Println(timi)

}

 now.Format 把时间戳格式化成日期

package main

import (
	"fmt"
	"time"
)

//时间戳转换成日期字符串
func main() {
	a := time.Now()
	fmt.Println(a.Unix())
	timeDemo := time.Unix(a.Unix(),0)
	layOut := "2006-01-02 15:04:05"
	var timi = timeDemo.Format(layOut)
	fmt.Println(timi)

}

日期字符串转换成时间戳

package main

import (
	"fmt"
	"time"
)

//日期字符串转换成时间戳
func main() {

	var a = "2023-02-23 15:38:04"
	var layOut = "2006-01-02 15:04:05"
	timeDemo, _ := time.ParseInLocation(layOut, a, time.Local)

	fmt.Println(timeDemo)        
	fmt.Println(timeDemo.Unix()) 

}

 

时间间隔

time.Duration time 包定义的一个类型,它代表两个时间点之间经过的时间,以纳秒为单
位。
time.Duration 表示一段时间间隔,可表示的最长时间段大约 290 年。
time包中定义的时间间隔类型的常量如下:
			const (
			    Nanosecond  Duration = 1
			    Microsecond          = 1000 * Nanosecond
			    Millisecond          = 1000 * Microsecond
			    Second               = 1000 * Millisecond
			    Minute               = 60 * Second
			    Hour                 = 60 * Minute
			)
time.Duration 表示 1 纳秒, time.Second 表示 1 秒。

时间操作函数

Add

我们在日常的编码过程中可能会遇到要求时间 + 时间间隔的需求, Go 语言的时间对象有提供
Add 方法如下:
func (t Time) Add(d Duration) Time
	timeDemo := time.Now()
	fmt.Println(timeDemo)
	timeDemo =timeDemo.Add(time.Hour)
	fmt.Println(timeDemo)

定时器

使用 time.NewTicker(时间间隔)来设置定时器

	dinDemo := time.NewTicker(time.Second)
	for t := range dinDemo.C{
		fmt.Println(t)
	}

	dinDemo := time.NewTicker(time.Second)
	x := 6
	for t := range dinDemo.C {
		x--
		fmt.Println(t)
		if x == 0{
			dinDemo.Stop()
			break
		}
	}

 

time.Sleep(time.Second) 来实现定时器 

	fmt.Println("1")
	time.Sleep(time.Second)
	fmt.Println("2")
	time.Sleep(time.Second)
	fmt.Println("3")
	time.Sleep(time.Second * 6)
	fmt.Println("4")
	
	for {
		time.Sleep(time.Second)
		fmt.Println("每秒一次")
	}

 

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

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

相关文章

js实现上下无缝滚动(不卡顿)

效果图如下&#xff1a; 代码如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport"…

Java阶段五Day13

Java阶段五Day13 文章目录 Java阶段五Day13回顾昨天思路Redis五种数据类型和类型无关的命令基本类型——String基本类型——hash基本类型——list基本类型——set基本类型——zset&#xff08;sorted set&#xff09; Redis实现分布式锁抢锁的设计思路整改当前消费逻辑添加分布…

前端 | ( 十三)CSS3简介及基本语法(下)| 伸缩盒模型 | 尚硅谷前端html+css零基础教程2023最新

学习来源&#xff1a;尚硅谷前端htmlcss零基础教程&#xff0c;2023最新前端开发html5css3视频 系列笔记&#xff1a; 【HTML4】&#xff08;一&#xff09;前端简介【HTML4】&#xff08;二&#xff09;各种各样的常用标签【HTML4】&#xff08;三&#xff09;表单及HTML4收尾…

网工内推 | 网络安全工程师,有安全相关证书优先

01 航天四创科技有限责任公司 招聘岗位&#xff1a;网络安全工程师 职责描述&#xff1a; 1、根据项目的投标技术方案、适配测试方案等&#xff0c;制定网络系统、安全系统、主机系统、存储系统等的深化设计方案和实施方案&#xff1b; 2、安装、配置和搭建基于软硬件设备的网…

RocketMQ基本概念与入门

文章目录 MQ基本结构依赖案例:productConsumer 核心概念1.nameserver2.broker3.主题队列4.queue队列5. 生产者6.消费者分组和生产者分组7.消费点位 MQ基本结构 message: 消息数据对象product: 程序代码,生成消息,发送消息到队列consumer: 程序代码,监听(绑定)队列,获取消息,执行…

MPU6050简介

文章目录 简介参数IIC通信的从机地址硬件电路框图 简介 MPU6050是一个6轴姿态传感器&#xff0c;可以测量芯片自身X,Y,Z轴的加速度&#xff0c;角速度&#xff0c;从而得到姿态角&#xff0c;用于平衡车&#xff0c;飞行器等。 内部结构&#xff1a; 3轴加速度计&#xff08;A…

数据库运维作业2

1.理解MySQL主从复制原理。 主要基于MySQL二进制日志 主要包括三个线程&#xff08;2个I/O线程&#xff0c;1个SQL线程&#xff09; 1&#xff09;MySQL将数据变化记录到二进制日志中&#xff1b; 2&#xff09;Slave将MySQL的二进制日志拷贝到Slave的中继日志中&#xff1b; 3…

vscode插件unocss无法正常使用

官网文档&#xff1a;https://alfred-skyblue.github.io/unocss-docs-cn/integrations/vscode#VPSidebarNav 无法使用的原因 很多人在使用的时候会配置uno.config.ts文件&#xff0c;但这个文件不一定放置在根目录下。扩展程序将尝试在您的项目中查找 UnoCSS 配置。如果未找到…

selenium 获取请求响应信息,包括请求的响应头和响应体

在我们使用selenium请求网页时&#xff0c;有时不想从浏览器解析后的html标签获取数据&#xff0c;如果能直接获取url返回的json格式数据会更容易解析。就像request和scrapy爬虫返回的响应数据一样。那么&#xff0c;我们用selenium应该怎么做呢&#xff1f; selenium并不支持…

pytest——断言后继续执行

前言 在编写测试用例的时候&#xff0c;一条用例可能会有多条断言结果&#xff0c;当然在自动化测试用例中也会遇到这种问题&#xff0c;我们普通的断言结果一旦失败后&#xff0c;就会出现报错&#xff0c;哪么如何进行多个断言呢&#xff1f;pytest-assume这个pytest的插件就…

Git的核心概念:探索Git中的提交、分支、合并、标签等核心概念,深入理解其作用和使用方法

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

学生管理系统-02项目案例(2)

一、表单的验证 完成表单验证的步骤 在el-form表单元素上添加一个rules属性&#xff0c;rules中配置相关的验证规则 在el-form表单元素上添加:model将data中验证的响应式数据关联起来 在el-form-item中添加prop属性&#xff0c;该属性一定和rules中的key值对应来 <el-fo…

区块链实验室(12) - 网络拓扑对PBFT共识流量的影响

区块链实验室(10) - 实例说明PBFT的共识过程说明了1个简单又极端的网络&#xff0c;在这个网络中完成1个交易的共识&#xff0c;需要26次通信&#xff0c;见下图所示。 换1个网络&#xff0c;这个网络是强连通图&#xff0c;见下图。 在这个网络中完成1次交易&#xff0c;流量见…

vue3 +ts 报错 index.vue 不是模块

那是因为index.vue中创建了一个空的script标签&#xff0c;而且语法使用的是ts语法。vue-cli会用ts语法解析和校验 如果是无状态组件&#xff0c;删掉 如果是有状态组件&#xff0c;导出该组件的实例 去掉null的script后&#xff1a;

如何防止word转pdf乱码?这几个方法你试过了吗?

在工作中&#xff0c;我们常常需要处理各种类型的文件&#xff0c;并且会根据不同需求进行PDF文件与其他格式文件的相互转换&#xff0c;然而有时候在将Word文件转换成PDF时&#xff0c;可能会遇到乱码等问题&#xff0c;让人感到困扰。今天我将介绍两种方法&#xff0c;让您在…

除了Midjourney,这5个绘画网站同样好用

如今随着科技的发展&#xff0c;AI绘画网站走进了人们的视线。今天本文会为大家介绍5个同Midjourney一样好用的AI绘画王章&#xff0c;带大家体验AI绘画带来的乐趣&#xff0c;也帮助设计师更快地实现绘画创作&#xff0c;一起来看看吧&#xff01; 1、即时灵感 即时灵感是一…

世界头号黑客,渗透成功率100%,他为什么这么厉害?

这个世界有一些人&#xff0c;他们特别擅长计算机编程&#xff0c;比如Linux之父Linus&#xff0c;id software创始人John Carmack、QEMU, FFMPEG作者Fabrice Bellard。 这个世界也有一些人&#xff0c;他们特别擅长和人打交道&#xff0c;三言两语之间就能让你敞开心扉&#…

抖斗音直播间评论引流助手,支持直播间喊话+视频评论区喊话=到指定直播间引流精准粉丝【永久脚本+详细教程】

如果你觉得直播间发言手动太麻烦了&#xff0c;或许这个自动工具能帮到你&#xff01; 1.开始运行前&#xff0c;需要手动去打开打开直播间或者视频评论区&#xff0c;再运行脚本。 2.脚本就是模拟人工操作&#xff0c;在相应的APP里进行评论&#xff0c;无突破APP限制功能。…

【【51单片机的DS18B20温度传感器】】

学习温度传感器&#xff0c;探索单片机的奥秘 DS18B20是一种常见的数字温度传感器 测温范围-55度 ~125度 通信接口 1-wire 其他特征 可形成总线结构 内置温度报警功能 可寄生供电 其中的64位bit ROM 作为器件地址&#xff0c;用于总线通信的寻址 SCRATCHPAD暂存器 用于总线…

科技资讯|苹果计划本月推出Vision Pro头显开发套件,电池有重大更新

根据消息源 aaronp613 分享的信息&#xff0c;苹果计划本月底面向开发者&#xff0c;发布 Vision Pro 头显开发套件。消息源还指出苹果更新了 Vision Pro 头显电池组的代号&#xff0c;共有 A2781&#xff0c;A2988 和 A2697 三种不同的型号&#xff0c;目前尚不清楚三者之间的…