Golang 中的 time 包详解(四):函数详解
在日常开发过程中,会频繁遇到对时间进行操作的场景,使用 Golang 中的 time 包可以很方便地实现对时间的相关操作。接下来的几篇文章会详细讲解 time 包,本文讲解一下 time 包中的函数。
func Now() Time
返回当前的系统时间。
package mainimport ("fmt""time"
)func main() {now := time.Now() fmt.Println(now.Unix())
}
func Parse(layout, value string) (Time, error)
将字符串解析为时间类型,并返回对应的 Time 对象。layout 参数是表示时间的格式,例如"2006-01-02 15:04:05"表示年、月、日、时、分、秒的格式。
package mainimport ("fmt""time"
)func main() {layout := "2006-01-02 15:04:05" str := "2023-07-19 12:34:56" t, _ := time.Parse(layout, str) fmt.Println(t)
}
func ParseDuration(s string) (Duration, error)
用于将字符串解析为 Duration 类型。
package mainimport ("fmt""time"
)func main() {durationStr := "2h45m"duration, err := time.ParseDuration(durationStr)if err != nil {fmt.Println("解析持续时间错误:", err)return}fmt.Printf("解析后的持续时间为:%v\n", duration)
}
func ParseInLocation(layout, value string, loc *Location) (Time, error)
用于将字符串解析为 Time 类型,并在指定的时区中解析时间。
package mainimport ("fmt""time"
)func main() {location := time.FixedZone("CustomZone", 2*60*60) // 创建一个偏移量为2小时的固定时区timeString := "2023-07-18 14:30:00" // 要解析的字符串t, err := time.ParseInLocation("2006-01-02 15:04:05", timeString, location)if err != nil {fmt.Println("解析时间错误:", err)return}fmt.Printf("解析后的时间为:%v\n", t)
}
func Date(year int, month Month, day, hour, min, sec, nsec int, loc *Location) Time
根据给定的年、月、日、时、分、秒和纳秒创建一个 Time 对象,loc 参数表示时区。
package mainimport ("fmt""time"
)func main() {t := time.Date(2023, 7, 19, 12, 34, 56, 0, time.UTC) fmt.Println(t)
}
func Since(t Time) Duration
返回从当前时间到 t 之间的时间差,以纳秒为单位。
package mainimport ("fmt""time"
)func main() {t := time.Date(2023, 7, 19, 12, 34, 56, 0, time.UTC) duration := time.Since(t) fmt.Println(duration)
}
func Until(t Time) Duration
返回从 t 到当前时间之间的时间差,以纳秒为单位。
package mainimport ("fmt""time"
)func main() {t := time.Date(2023, 7, 19, 12, 34, 56, 0, time.UTC) duration := time.Until(t) fmt.Println(duration)
}
func After(d Duration) <-chan Time
用于创建一个通道,将在指定的时间间隔后向通道发送一个 time.Time 类型的值。
package mainimport ("fmt""time"
)func main() {// 创建一个将在5秒后发送值的通道timer := time.After(5 * time.Second)// 等待通道发送值fmt.Println(<-timer)
}
func AfterFunc(d Duration, f func()) *Timer
用于创建一个定时器,并在指定的时间间隔后执行一个函数。
package mainimport ("fmt""time"
)func main() {// 创建一个将在5秒后触发的定时器timer := time.AfterFunc(5*time.Second, func() {fmt.Println("路多辛的博客!")})// 停止定时器time.Sleep(10 * time.Second)timer.Stop()// 输出:路多辛的博客!fmt.Println("Program ended")
}
func Unix(sec int64, nsec int64) Time
用于将 Unix 时间戳转换为时间类型。
package mainimport ("fmt""time"
)func main() {// 定义一个Unix时间戳unixTime := int64(1691587957)// 使用time.Unix函数将Unix时间戳转换为时间类型t := time.Unix(unixTime, 0)// 打印结果fmt.Println(t)
}
func UnixMilli(msec int64) Time
用于将毫秒时间戳转换为时间类型。
package mainimport ("fmt""time"
)func main() {t := time.UnixMilli(1691587957000)// 打印结果fmt.Println(t)
}
func UnixMicro(usec int64) Time
用于将微秒时间戳转换为时间类型。
package mainimport ("fmt""time"
)func main() {t := time.UnixMilli(1691587957000000)// 打印结果fmt.Println(t)
}
func Tick(d Duration) <-chan Time
用于创建一个定时器,该定时器每隔一定的时间间隔就会向通道发送当前的时间。
package mainimport ("fmt""time"
)func main() {// 创建一个每隔1秒进行一次打印的定时器ticker := time.Tick(1 * time.Second)for {<-ticker // 等待定时器的发送fmt.Println("这是ticker的打印")}
}
func LoadLocation(name string) (*Location, error)
用于加载并返回一个特定的时区。
package mainimport ("fmt""time"
)func main() {// 加载"Asia/Shanghai"时区location, err := time.LoadLocation("Asia/Shanghai")if err != nil {fmt.Println("无法加载时区:", err)return}// 使用该时区创建一个时间对象t := time.Now().In(location)fmt.Println("当前时间:", t)
}
func LoadLocationFromTZData(name string, data []byte) (*Location, error)
用于从 TZ 数据中加载并返回一个时区。
package mainimport ("fmt""time"
)func main() {// 加载"Asia/Shanghai"时区location, err := time.LoadLocationFromTZData("Asia/Shanghai")if err != nil {fmt.Println("无法加载时区:", err)return}// 使用该时区创建一个时间对象t := time.Now().In(location)fmt.Println("当前时间:", t)
}
func FixedZone(name string, offset int) *Location
用于创建一个具有固定偏移量的时区。
package mainimport ("fmt""time"
)func main() {// 创建一个偏移量为2小时的固定时区location := time.FixedZone("CustomZone", 2*60*60)// 使用该时区创建一个时间对象t := time.Now().In(location)fmt.Println("当前时间:", t)
}
func NewTicker(d Duration) *Ticker
用于创建一个新的 Ticker 对象,该对象可以在指定的时间间隔重复发送 Time 值。
package mainimport ("fmt""time"
)func main() {// 创建一个每秒发送一次的 Ticker 对象ticker := time.NewTicker(1 * time.Second)defer ticker.Stop()for {select {case <-ticker.C:fmt.Println("打印一次路多辛的博客")}}
}
func NewTimer(d Duration) *Timer
用于创建一个新的 Timer 对象,该对象可以在指定的时间间隔后发送一个 Time 类型的值。
package mainimport ("fmt""time"
)func main() {// 创建一个定时器,在2秒后发送一个时间值timer := time.NewTimer(2 * time.Second)defer timer.Stop()// 使用定时器发送的时间值处理函数timerHandler := func() {fmt.Println("收到时间值")}// 在定时器发送时间值之前执行处理函数go timerHandler()// 等待定时器发送时间值select {case <-timer.C:fmt.Println("定时器已发送时间值")}
}
func Sleep(d Duration)
让当前的 goroutine 休眠指定的时间。
package mainimport ("fmt""time"
)func main() {fmt.Println("开始休眠")time.Sleep(2 * time.Second)fmt.Println("休眠结束")
}
相关文章:
Golang 中的 time 包详解(四):函数详解
在日常开发过程中,会频繁遇到对时间进行操作的场景,使用 Golang 中的 time 包可以很方便地实现对时间的相关操作。接下来的几篇文章会详细讲解 time 包,本文讲解一下 time 包中的函数。 func Now() Time 返回当前的系统时间。 package mai…...
【前端 | CSS】5种经典布局
页面布局是样式开发的第一步,也是 CSS 最重要的功能之一。 常用的页面布局,其实就那么几个。下面我会介绍5个经典布局,只要掌握了它们,就能应对绝大多数常规页面。 这几个布局都是自适应的,自动适配桌面设备和移动设备…...
腾讯云宣布VPC网络架构重磅升级,可毫秒级感知网络故障并实现自愈
8月11日,腾讯云宣布VPC(Virtual Private Cloud,云私有网络)架构重磅升级。新架构采用多项腾讯核心自研技术,能够支撑用户构建业界最大 300万节点超大规模单VPC网络,并将转发性能最大提升至业界领先的200Gbp…...
vue 路由页面跳转
从index.vue跳转到data.vue index.vue <el-table-column label"客户数" align"center" :show-overflow-tooltip"true"><template slot-scope"scope"><router-link :to"/system/enterprise-data/index/ scope.ro…...
Vue toRefs:在Vue中不失去响应式的情况下解构属性
Vue toRefs:在Vue中不失去响应式的情况下解构属性 文章目录 Vue toRefs:在Vue中不失去响应式的情况下解构属性什么是响应式?解构Props的挑战使用toRefs保持响应式结论 在Vue开发中,我们经常会在组件之间传递数据。这时候ÿ…...
自定义element-plus的弹框样式
项目中弹框使用频繁,需要统一样式风格,此组件可以自定义弹框的头部样式和内容 一、文件结构如下: 二、自定义myDialog组件 需求: 1.自定义弹框头部背景样式和文字 2.自定义弹框内容 3.基本业务流程框架 components/myDialog/index.vue完整代码: &…...
Linux:iptables防火墙
目录 绪论 1、防火墙 1.1 保护范围 1.2 网络协议划分 1.3 协议:tcp 1.4 四表 1.5 五链 1.6 iptables的规则 1.7 匹配顺序 流入本机:prerouting ------->iuput---------->用户进程(httpd服务)------请求--------响应--------->数据要返…...
MongoDB文档-进阶使用-spring-boot整合使用MongoDB---MongoTemplate完成增删改查
传送门: MongoDB文档--基本概念_一单成的博客-CSDN博客 MongoDB文档--基本安装-linux安装(mongodb环境搭建)-docker安装(挂载数据卷)-以及详细版本对比_一单成的博客-CSDN博客 MongoDB文档--基本安装-linux安装&…...
设计模式十四:责任链模式(Chain of Responsibility Pattern)
责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,它允许你将请求沿着处理者链进行传递,直到有一个处理者能够处理该请求。 在责任链模式中,多个处理者对象被连接成一个链。当接收到一个请求时…...
将商城项目放到docker-centos7中
1、docker pull centos:7 2、docker run -d -it --privileged 仓库名称/shopcentos:1.1 /usr/sbin/init 注意: /usr/sbin/init 必须加,否则没法使用systemctl启动mysql 3、安装mysql教程 安装msyql教程:https://blog.csdn.net/davice_li…...
C# Winform 自动获取 软件版本号
C# Winform如何自动获取版本号 方案一 缺点是不适配,clickones发布的版本 public static string GetVersion() {try {return System.Deployment.Application.ApplicationDeployment.CurrentDeployment.CurrentVersion.ToString();}catch{return System.Ref…...
基于C++实现了最小反馈弧集问题的三种近似算法(GreedyFAS、SortFAS、PageRankFAS)
该项目是一个基于链式前向星存图、boost(boost::hash、asio线程池)以及emhash7/8的非官方实现,实现了最小反馈弧集问题的三种近似算法。该问题是在有向图中找到最小的反馈弧集,其中反馈弧集是指一组弧,使得从这些反馈弧…...
奶牛用餐 优先队列 java
👨🏫 奶牛用餐 约翰的农场有 n n n 头奶牛,编号 1 s i m n 1 \\sim n 1simn。 每天奶牛们都要去食堂用餐。 食堂一共有 k k k 个座位,也就是说同一时间最多可以容纳 k k k 头奶牛同时用餐。 已知,第 i i i …...
包管理机制pip3
pip3 安装pip3 安装pip3 apt install python3-pip yum install python3-pip从仓库出发的命令 查询仓库信息 // 获取默认pip3源 pip3 config get global.index-url查询所有软件包 查询已经安装的所有软件包 pip3 list从软件包出发的命令 从软件包名出发查询其他信息 查询…...
liunx在线安装tomcat
1、在线安装 https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.91/bin/apache-tomcat-8.5.91.tar.gz 执行:wget --no-check-certificate https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.91/bin/apache-tomcat-8.5.91.tar.gz ps:或者直接把tar.gz扔服务器 2、 编…...
导入示例工程出现error: failed to start ability. Error while Launching activity错误的解决办法
导入华为健康生活应用(ArkTS),使用DevEco Studio打开,运行报错: error: failed to start ability. Error while Launching activity解决办法:修改module.json5里面exported的值,由false改为tr…...
【深入了解PyTorch】PyTorch分布式训练:多GPU、数据并行与模型并行
【深入了解PyTorch】PyTorch分布式训练:多GPU、数据并行与模型并行 PyTorch分布式训练:多GPU、数据并行与模型并行1. 分布式训练简介2. 多GPU训练3. 数据并行4. 模型并行5. 总结PyTorch分布式训练:多GPU、数据并行与模型并行 在深度学习领域,模型的复杂性和数据集的巨大规…...
linux 下 网卡命名改名
Linux 操作系统的网卡设备的传统命名方式是 eth0、eth1、eth2等,而 CentOS7 提供了不同的命名规则,默认是网卡命名会根据网卡的硬件信息,插槽位置等有关;来分配。这样做的优点是命名全自动的、可预知的,缺点是比 eth0、…...
6.2.0在线编辑:GrapeCity Documents for Word (GcWord) Crack
GrapeCity Word 文档 (GcWord) 支持 Office Math 函数以及转换为 MathML GcWord 现在支持在 Word 文档中创建和编辑 Office Math 内容。GcWord 中的 OMath 支持包括完整的 API,可处理科学、数学和通用 Word 文档中广泛使用的数学符号、公式和方程。以下是通过 OMa…...
为什么需要智能指针?
为什么需要智能指针? 解决忘记释放内存导致内存泄漏的问题。解决异常安全问题。 #include<iostream> using namespace std;int div() {int a, b;cin >> a >> b;if (b 0)throw invalid_argument("除0错误");return a / b; } void Func(…...
简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...
免费数学几何作图web平台
光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...
宇树科技,改名了!
提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...
ubuntu22.04有线网络无法连接,图标也没了
今天突然无法有线网络无法连接任何设备,并且图标都没了 错误案例 往上一顿搜索,试了很多博客都不行,比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动,重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...
云安全与网络安全:核心区别与协同作用解析
在数字化转型的浪潮中,云安全与网络安全作为信息安全的两大支柱,常被混淆但本质不同。本文将从概念、责任分工、技术手段、威胁类型等维度深入解析两者的差异,并探讨它们的协同作用。 一、核心区别 定义与范围 网络安全:聚焦于保…...
多模态学习路线(2)——DL基础系列
目录 前言 一、归一化 1. Layer Normalization (LN) 2. Batch Normalization (BN) 3. Instance Normalization (IN) 4. Group Normalization (GN) 5. Root Mean Square Normalization(RMSNorm) 二、激活函数 1. Sigmoid激活函数(二分类&…...
timestamp时间戳转换工具
作为一名程序员,一款高效的 在线转换工具 (在线时间戳转换 计算器 字节单位转换 json格式化)必不可少!https://jsons.top 排查问题时非常痛的点: 经常在秒级、毫秒级、字符串格式的时间单位来回转换,于是决定手撸一个…...
