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

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 包详解(四):函数详解

在日常开发过程中&#xff0c;会频繁遇到对时间进行操作的场景&#xff0c;使用 Golang 中的 time 包可以很方便地实现对时间的相关操作。接下来的几篇文章会详细讲解 time 包&#xff0c;本文讲解一下 time 包中的函数。 func Now() Time 返回当前的系统时间。 package mai…...

【前端 | CSS】5种经典布局

页面布局是样式开发的第一步&#xff0c;也是 CSS 最重要的功能之一。 常用的页面布局&#xff0c;其实就那么几个。下面我会介绍5个经典布局&#xff0c;只要掌握了它们&#xff0c;就能应对绝大多数常规页面。 这几个布局都是自适应的&#xff0c;自动适配桌面设备和移动设备…...

腾讯云宣布VPC网络架构重磅升级,可毫秒级感知网络故障并实现自愈

8月11日&#xff0c;腾讯云宣布VPC&#xff08;Virtual Private Cloud&#xff0c;云私有网络&#xff09;架构重磅升级。新架构采用多项腾讯核心自研技术&#xff0c;能够支撑用户构建业界最大 300万节点超大规模单VPC网络&#xff0c;并将转发性能最大提升至业界领先的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&#xff1a;在Vue中不失去响应式的情况下解构属性 文章目录 Vue toRefs&#xff1a;在Vue中不失去响应式的情况下解构属性什么是响应式&#xff1f;解构Props的挑战使用toRefs保持响应式结论 在Vue开发中&#xff0c;我们经常会在组件之间传递数据。这时候&#xff…...

自定义element-plus的弹框样式

项目中弹框使用频繁,需要统一样式风格,此组件可以自定义弹框的头部样式和内容 一、文件结构如下: 二、自定义myDialog组件 需求&#xff1a; 1.自定义弹框头部背景样式和文字 2.自定义弹框内容 3.基本业务流程框架 components/myDialog/index.vue完整代码&#xff1a; &…...

Linux:iptables防火墙

目录 绪论 1、防火墙 1.1 保护范围 1.2 网络协议划分 1.3 协议&#xff1a;tcp 1.4 四表 1.5 五链 1.6 iptables的规则 1.7 匹配顺序 流入本机&#xff1a;prerouting ------->iuput---------->用户进程(httpd服务)------请求--------响应--------->数据要返…...

MongoDB文档-进阶使用-spring-boot整合使用MongoDB---MongoTemplate完成增删改查

传送门&#xff1a; MongoDB文档--基本概念_一单成的博客-CSDN博客 MongoDB文档--基本安装-linux安装&#xff08;mongodb环境搭建&#xff09;-docker安装&#xff08;挂载数据卷&#xff09;-以及详细版本对比_一单成的博客-CSDN博客 MongoDB文档--基本安装-linux安装&…...

设计模式十四:责任链模式(Chain of Responsibility Pattern)

责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;是一种行为设计模式&#xff0c;它允许你将请求沿着处理者链进行传递&#xff0c;直到有一个处理者能够处理该请求。 在责任链模式中&#xff0c;多个处理者对象被连接成一个链。当接收到一个请求时&#xf…...

将商城项目放到docker-centos7中

1、docker pull centos:7 2、docker run -d -it --privileged 仓库名称/shopcentos:1.1 /usr/sbin/init 注意&#xff1a; /usr/sbin/init 必须加&#xff0c;否则没法使用systemctl启动mysql 3、安装mysql教程 安装msyql教程&#xff1a;https://blog.csdn.net/davice_li…...

C# Winform 自动获取 软件版本号

C# Winform如何自动获取版本号 方案一 缺点是不适配&#xff0c;clickones发布的版本 public static string GetVersion() {try {return System.Deployment.Application.ApplicationDeployment.CurrentDeployment.CurrentVersion.ToString();}catch{return System.Ref…...

基于C++实现了最小反馈弧集问题的三种近似算法(GreedyFAS、SortFAS、PageRankFAS)

该项目是一个基于链式前向星存图、boost&#xff08;boost::hash、asio线程池&#xff09;以及emhash7/8的非官方实现&#xff0c;实现了最小反馈弧集问题的三种近似算法。该问题是在有向图中找到最小的反馈弧集&#xff0c;其中反馈弧集是指一组弧&#xff0c;使得从这些反馈弧…...

奶牛用餐 优先队列 java

&#x1f468;‍&#x1f3eb; 奶牛用餐 约翰的农场有 n n n 头奶牛&#xff0c;编号 1 s i m n 1 \\sim n 1simn。 每天奶牛们都要去食堂用餐。 食堂一共有 k k k 个座位&#xff0c;也就是说同一时间最多可以容纳 k k k 头奶牛同时用餐。 已知&#xff0c;第 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 执行&#xff1a;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错误的解决办法

导入华为健康生活应用&#xff08;ArkTS&#xff09;&#xff0c;使用DevEco Studio打开&#xff0c;运行报错&#xff1a; error: failed to start ability. Error while Launching activity解决办法&#xff1a;修改module.json5里面exported的值&#xff0c;由false改为tr…...

【深入了解PyTorch】PyTorch分布式训练:多GPU、数据并行与模型并行

【深入了解PyTorch】PyTorch分布式训练:多GPU、数据并行与模型并行 PyTorch分布式训练:多GPU、数据并行与模型并行1. 分布式训练简介2. 多GPU训练3. 数据并行4. 模型并行5. 总结PyTorch分布式训练:多GPU、数据并行与模型并行 在深度学习领域,模型的复杂性和数据集的巨大规…...

linux 下 网卡命名改名

Linux 操作系统的网卡设备的传统命名方式是 eth0、eth1、eth2等&#xff0c;而 CentOS7 提供了不同的命名规则&#xff0c;默认是网卡命名会根据网卡的硬件信息&#xff0c;插槽位置等有关&#xff1b;来分配。这样做的优点是命名全自动的、可预知的&#xff0c;缺点是比 eth0、…...

6.2.0在线编辑:GrapeCity Documents for Word (GcWord) Crack

GrapeCity Word 文档 (GcWord) 支持 Office Math 函数以及转换为 MathML GcWord 现在支持在 Word 文档中创建和编辑 Office Math 内容。GcWord 中的 OMath 支持包括完整的 API&#xff0c;可处理科学、数学和通用 Word 文档中广泛使用的数学符号、公式和方程。以下是通过 OMa…...

为什么需要智能指针?

为什么需要智能指针&#xff1f; 解决忘记释放内存导致内存泄漏的问题。解决异常安全问题。 #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.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...

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平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

宇树科技,改名了!

提到国内具身智能和机器人领域的代表企业&#xff0c;那宇树科技&#xff08;Unitree&#xff09;必须名列其榜。 最近&#xff0c;宇树科技的一项新变动消息在业界引发了不少关注和讨论&#xff0c;即&#xff1a; 宇树向其合作伙伴发布了一封公司名称变更函称&#xff0c;因…...

ubuntu22.04有线网络无法连接,图标也没了

今天突然无法有线网络无法连接任何设备&#xff0c;并且图标都没了 错误案例 往上一顿搜索&#xff0c;试了很多博客都不行&#xff0c;比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动&#xff0c;重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...

云安全与网络安全:核心区别与协同作用解析

在数字化转型的浪潮中&#xff0c;云安全与网络安全作为信息安全的两大支柱&#xff0c;常被混淆但本质不同。本文将从概念、责任分工、技术手段、威胁类型等维度深入解析两者的差异&#xff0c;并探讨它们的协同作用。 一、核心区别 定义与范围 网络安全&#xff1a;聚焦于保…...

多模态学习路线(2)——DL基础系列

目录 前言 一、归一化 1. Layer Normalization (LN) 2. Batch Normalization (BN) 3. Instance Normalization (IN) 4. Group Normalization (GN) 5. Root Mean Square Normalization&#xff08;RMSNorm&#xff09; 二、激活函数 1. Sigmoid激活函数&#xff08;二分类&…...

timestamp时间戳转换工具

作为一名程序员&#xff0c;一款高效的 在线转换工具 &#xff08;在线时间戳转换 计算器 字节单位转换 json格式化&#xff09;必不可少&#xff01;https://jsons.top 排查问题时非常痛的点: 经常在秒级、毫秒级、字符串格式的时间单位来回转换&#xff0c;于是决定手撸一个…...