当前位置: 首页 > news >正文

18、golang时间管理

时间

时间是非常重要的,离开了时间,几乎没有哪个生产环境数据能够有意义。
在Go语言中,时间定义为Time结构体。

package mainimport ("fmt""time"
)func main() {var t = time.Now()fmt.Println(t)		fmt.Printf("%v %+[1]v\n", t)fmt.Printf("%#v\n", t)fmt.Printf("%T, %[1]v\n", t.UTC()) // UTC时间
}
2024-01-13 19:06:34.6726547 +0800 CST m=+0.003070601
2024-01-13 19:06:34.6726547 +0800 CST m=+0.003070601 2024-01-13 19:06:34.6726547 +0800 CST m=+0.003070601
time.Date(2024, time.January, 13, 19, 6, 34, 672654700, time.Local)
time.Time, 2024-01-13 11:06:34.6726547 +0000 UTC

时间格式化

Go语言没有采用%Y%m%d这样的格式化符号,它很特别。

package mainimport ("fmt""time"
)func main() {var t = time.Now()fmt.Printf("%T, %[1]v\n", t)fmt.Println(t.Format("0102 030405 06 pm -0700"))fmt.Println(t.UTC().Format("0102 030405 06 pm"))
}
time.Time, 2024-01-13 19:10:07.3356399 +0800 CST m=+0.003551301
0113 071007 24 pm +0800
0113 111007 24 am

记住一个字符串"010203040506pm-0700",即 1月2日下午3点4分5秒06年西7区 ,改成我们习惯的格式符 2006/01/02 15:04:05 -0700

Year: "2006" "06"
Month: "Jan" "January" "01" "1"
Day of the week: "Mon" "Monday"
Day of the month: "2" "_2" "02" 2不补位;_2补空格;02不够补0
Day of the year: "__2" "002"
Hour: "15" "3" "03" (PM or AM) 如果写303显示为12小时制;15显示为24小时制
Minute: "4" "04"
Second: "5" "05"
AM/PM mark: "PM"
"-0700" ±hhmm 时区
09匹配小数部分
格式化时,09表示小数部分位数,0超出部分补0,9超出部分不补0
var t = time.Now()
fmt.Printf("%T, %[1]v\n", t)
fmt.Println(t.Format("2006/01/02 15:04:05 -0700")) // 带时区
fmt.Println(t.UTC().Format("2006/01/02 15:04:05.0000")) // 不带时区time.Time, 2024-01-13 19:14:51.5891868 +0800 CST m=+0.003472101
2024/01/13 19:14:51 +0800
2024/01/13 11:14:51.5891

时间解析

package mainimport ("fmt""time"
)
func main() {if t, err := time.Parse("2006/01/02 15:04:05 -0700", // 格式字符串"2008/09/08 20:36:50 +0800", // 时间字符串); err == nil {fmt.Println(t)} else {fmt.Println(err)}
}
2008-09-08 20:36:50 +0800 CST

带小数部分解析
.0 解析时,0的位数必须和字符串中的小数部分位数完全一致,否则失败
.9 解析时,可以匹配任意位数小数部分,包括没有小数部分

time.Parse(
"2006/01/02 15:04:05.000000 -0700", // 格式字符串
"2008/09/08 20:36:50.123456 +0800", // 时间字符串
)
time.Parse(
"2006/01/02 15:04:05.9 -0700",    // 格式字符串
"2008/09/08 20:36:50.123456 +0800", // 时间字符串
)

时间属性

package mainimport ("fmt""time"
)type Month intconst (January Month = 1 + iotaFebruaryMarchAprilMayJuneJulyAugustSeptemberOctoberNovemberDecember
)type Weekday intconst (Sunday Weekday = iotaMondayTuesdayWednesdayThursdayFridaySaturday
)func main() {if t, err := time.Parse("2006/01/02 15:04:05 -0700", // 格式字符串"2008/09/08 20:36:50 +0800", // 时间字符串); err == nil {// 2008-09-08 20:36:50 +0800 CST// 时间戳fmt.Println(t.Unix(), t.UnixMilli(), t.UnixMicro(), t.UnixNano())// 年月日fmt.Println(t.Year(), t.Month(), t.Month().String(), // 英文月份,默认走String方法int(t.Month()), // 数字月份 9t.Day(),t.YearDay(), // YearDay本年的第几天)// 时分秒fmt.Println(t.Hour(), t.Minute(), t.Second(), t.Nanosecond()) //Nanosecond纳秒// 星期fmt.Println(t.Weekday(), int(t.Weekday())) // Weekdayfmt.Println(t.ISOWeek())                   // 年的第几周}
}1220877410 1220877410000 1220877410000000 1220877410000000000
2008 September September 9 8 252
20 36 50 0
Monday 1
2008 37

市区

package mainimport ("fmt""time"
)func main() {if t, err := time.Parse("2006/01/02 15:04:05", // 格式字符串"2008/09/08 20:36:50", // 时间字符串); err == nil {fmt.Println(t)         // 2008-09-08 20:36:50 +0000 UTCfmt.Println(t.Local()) // 2008-09-09 04:36:50 +0800 CST}
}
2008-09-08 20:36:50 +0000 UTC
2008-09-09 04:36:50 +0800 CST如果没有时区,表示UTC,可以简单认为是零时区时间。
注意,这里可能导致时间错误,给出的时间,心里想的是东八区的时间,但是Go语言却认为是零时区
的,如果再转换到东八区,就差了8个小时了。func main() {tz, _ := time.LoadLocation("Asia/Shanghai") // 使用名字if t, err := time.ParseInLocation("2006/01/02 15:04:05", // 格式字符串"2008/09/08 20:36:50", // 时间字符串tz,); err == nil {fmt.Println(t)         // 2008-09-08 20:36:50 +0800 CSTfmt.Println(t.Local()) // 2008-09-08 20:36:50 +0800 CST}
}2008-09-08 20:36:50 +0800 CST
2008-09-08 20:36:50 +0800 CST

时间运算

时间 + 时间 = ?
时间 - 时间 = 时间差、时间增量
时间 ± 时间增量 = 时间
package mainimport ("fmt""time"
)func main() {tz, _ := time.LoadLocation("Asia/Shanghai") // 使用名字s1 := "2022/09/08 20:36:50"s2 := "2022/09/08 21:40:51"layout := "2006/01/02 15:04:05"t1, _ := time.ParseInLocation(layout, s1, tz)t2, _ := time.ParseInLocation(layout, s2, tz)fmt.Println(t1)fmt.Println(t2)// 时间差delta := t2.Sub(t1)                     // t2 - t1fmt.Printf("delta: %v, %[1]T\n", delta) // Duration类型fmt.Println(delta.Seconds())            // 共差多少秒// 构造Durationns3 := time.Duration(3)              // 3纳秒s3 := time.Duration(3 * time.Second) // 3秒h3 := time.Duration(3 * time.Hour)   // 3小时fmt.Println(ns3, s3, h3)// 时间偏移t3 := t2.Add(h3)fmt.Println(t3)t4 := t2.Add(-h3)fmt.Println(t4)fmt.Println(t3.After(t4))
}2022-09-08 20:36:50 +0800 CST
2022-09-08 21:40:51 +0800 CST
delta: 1h4m1s, time.Duration
3841
3ns 3s 3h0m0s
2022-09-09 00:40:51 +0800 CST
2022-09-08 18:40:51 +0800 CST
true

相关文章:

18、golang时间管理

时间 时间是非常重要的,离开了时间,几乎没有哪个生产环境数据能够有意义。 在Go语言中,时间定义为Time结构体。 package mainimport ("fmt""time" )func main() {var t time.Now()fmt.Println(t) fmt.Printf("%…...

远程开发之vacode插件Remote - SSH

远程开发之vacode插件Remote - SSH vscode插件(Remote - SSH)ssh config自定义配置跳板机ssh-agent配置(使ForwardAgent配置生效, 免密拉代码)拷贝公钥到服务器(实现免密登录服务器) 通过vscode的Remote - SSH插件, 实现远程服务器进行像本地操作一样使用远程服务器, 亦可进行像…...

大模型实战营Day4 作业

基础作业: 构建数据集,使用 XTuner 微调 InternLM-Chat-7B 模型, 让模型学习到它是你的智能小助手,效果如下图所示,本作业训练出来的模型的输出需要将不要葱姜蒜大佬替换成自己名字或昵称! 微调前(回答比较…...

翻译: Streamlit从入门到精通 基础控件 一

这个关于Streamlit的教程旨在帮助数据科学家或机器学习工程师,他们不是网络开发者,也不想花费数周时间学习使用这些框架来构建网络应用程序。 1. 什么是Streamlit? Streamlit是一个免费且开源的框架,用于快速构建和共享美观的机器…...

【复现】网康科技-防火墙存在RCE漏洞_17

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一: 四.修复建议: 五. 搜索语法: 六.免责声明 一.概述 网康下一代防火墙(NGFW)是一款可以全面应对应用层威胁的高性能防火墙。通过深入洞察网络流量中的用户、应用和内容,并…...

vue2、vue3里面去掉访问地址中路由‘#‘号--nginx配置

需求 我们这里分享一下关于Vue2和Vue3里面如何去掉浏览器路由里面#号的问题,以及nginx的配置。 去掉#号问题之前我们先讨论一下html中的hash模式和history模式。 html中的hash模式 HTML的hash模式指的是URL中的锚点部分(#后面的内容)被用…...

AR HUD全面「上新」

AR HUD赛道正在迎来新的时代。 上周,蔚来ET9正式发布亮相,新车定位为D级行政旗舰轿车,其中,在智能座舱交互层面,继理想L系列、长安深蓝S7之后,也首次取消仪表盘,取而代之的是业内首个全焦段AR H…...

Open3D AABB包围盒计算与使用(19)

Open3D AABB包围盒计算与使用(19) 一、算法速览二、算法实现1.代码2.结果少年听雨歌楼上。红烛昏罗帐。壮年听雨客舟中。江阔云低、断雁叫西风。 而今听雨僧庐下。鬓已星星也。悲欢离合总无情。一任阶前、点滴到天明。 一、算法速览 AABB包围盒就是将点云用一个各条边沿着坐…...

HDFS相关API操作

文章目录 API文档环境配置API操作准备工作创建文件夹文件上传文件下载文件删除文件的更名和移动获取文件详细信息 API文档 HDFS API官方文档:https://hadoop.apache.org/docs/r3.3.1/api/index.html 环境配置 将Hadoop的Jar包解压到非中文路径(例如D:…...

【AI视野·今日Robot 机器人论文速览 第七十二期】Mon, 8 Jan 2024

AI视野今日CS.Robotics 机器人学论文速览 Mon, 8 Jan 2024 Totally 13 papers 👉上期速览✈更多精彩请移步主页 Daily Robotics Papers Deep Reinforcement Learning for Local Path Following of an Autonomous Formula SAE Vehicle Authors Harvey Merton, Thoma…...

背包问题(补充中)

1.01背包 有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。 第 i 件物品的体积是 v[i],价值是 w[i]。 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 输出最大价值。 对于01背包问题,只有…...

十三、QPalette的简单使用(Qt5 GUI系列)

目录 一、设计需求 二、实现代码 三、代码解析 四、总结 一、设计需求 在实际应用中,经常需要改变某个控件的颜色外观,如背景、文字颜色等。Qt提供的调色板类 QPalette 专门用于管理对话框的外观显示。QPalette 类相当于对话框或是控件的调色板&…...

uniapp小程序超出一行显示...并展示更多按钮

注意:全部标签需要浮动在父盒子右边哦 循环获取所有需要展示数据标签的高度 this.goods this.goods.map(item > ({...item,showBtn: false}));this.$nextTick(() > {uni.createSelectorQuery().in(this).selectAll(".cart-info").boundingClientRect((data)…...

Qt打包程序

添加链接描述...

实验用PFA材质烧杯和高硼硅玻璃材质有什么区别?

高硼硅玻璃烧杯和特氟龙烧杯是两种常见的实验室容器,它们有不同的特点和应用。 高硼硅玻璃烧杯: 高硼硅玻璃烧杯是一种由硅酸盐和硼酸盐等原料制成的玻璃材质。它具有以下特点: 耐热性能较好,可以承受较高的温度变化。 抗化学侵…...

Raspbian安装摄像头

Raspbian安装摄像头 1. 源由2. 摄像头2.1 选型2.2 系统2.3 安装 3. 配置&命令3.1 命令3.2 配置 4. 测试4.1 拍照4.1.1 libcamera-jpeg4.1.2 libcamera-still 4.2 视频流4.2.1 RTSP流4.2.2 TCP流 5. 参考资料 1. 源由 家里闲置两块树莓派,打算做个WiFi视频流RTS…...

迅腾文化用网络集成化生态系统助力品牌之路的坚实后盾

商业竞争激烈,品牌不仅是企业的标志和形象,更是其核心价值和竞争力的体现。然而,企业在品牌推广过程中面临着诸多如缺乏有效的渠道管理、品牌形象模糊以及竞争激烈的市场环境等。这些阻碍着企业的品牌发展和市场占有率的提升。本文将通过企业…...

2401C++,C++编译时自动加密

编译时加密串 编译时加密串,运行时动态解密.此自定义加密算法可增加破解的难度,因为攻击者不仅需要逆向工程代码,还需要理解加密算法. 这样对代码的改动小,不影响代码可读性. 下面是使用boost.hana编译时加密串的示例: #include <string> #include <iostream> #i…...

vue 自定义网页图标 favicon.ico 和 网页标题

效果预览 1. 添加配置 vue.config.js 在 module.exports { 内添加 // 自定义网页图标pwa: {iconPaths: {favicon32: "./favicon.ico",favicon16: "./favicon.ico",appleTouchIcon: "./favicon.ico",maskIcon: "./favicon.ico",msTil…...

JOSEF约瑟端子排中间继电器 DZY-204 DC110V 导轨安装,板前接线

DZY系列端子排中间继电器 系列型号&#xff1a; DZY-101端子排中间继电器 DZY-104端子排中间继电器 DZY-105端子排中间继电器 DZY-301端子排中间继电器 DZY-106端子排中间继电器 DZY-401端子排中间继电器 DZY-204端子排中间继电器 一、 概述 DZY-204端子排中间继电器用于各种…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验&#xff0c;以及大语言模型的分析能力&#xff0c;我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际&#xff0c;我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测&#xff0c;聊作存档。等到明…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...