【go从零单排】Timer、Epoch 时间函数

🌈Don’t worry , just coding!
内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。
📗概念
在 Go 语言中,time.Timer 是一个用于在指定时间后执行操作的计时器。它可以用于延迟执行某些任务或在特定时间间隔内执行操作。
💻代码
日期Example
package mainimport ("fmt""time" //time:用于处理时间和日期。
)func main() {//p := fmt.Println:将 fmt.Println 函数赋值给变量 p,方便后续调用。p := fmt.Println//获取当前时间:time.Now() 返回当前的本地时间。now := time.Now()p(now) //打印当前时间//创建一个特定的时间:time.Date 创建一个指定的时间(2009年11月17日20时34分58秒)。then := time.Date(2009, 11, 17, 20, 34, 58, 651387237, time.UTC)p(then) //打印这个特定的时间。//分别获取then的年月日时分秒p(then.Year())p(then.Month())p(then.Day())p(then.Hour())p(then.Minute())p(then.Second())p(then.Nanosecond()) //获取纳秒p(then.Location()) //获取时区信息p(then.Weekday()) //获取星期几p(then.Before(now)) //检查 then 是否在 now 之前。p(then.After(now)) //检查 then 是否在 now 之后。p(then.Equal(now)) //检查 then 是否与 now 相等。diff := now.Sub(then) //计算时间差:now.Sub(then) 返回 now 和 then 之间的时间差(time.Duration 类型)。p(diff)//diff.Hours():返回时间差的小时数。//diff.Minutes():返回时间差的分钟数。//diff.Seconds():返回时间差的秒数。//diff.Nanoseconds():返回时间差的纳秒数。p(diff.Hours())p(diff.Minutes())p(diff.Seconds())p(diff.Nanoseconds())//then.Add(diff):在 then 时间上加上时间差 diff,得到一个新的时间。//then.Add(-diff):在 then 时间上减去时间差 diff,得到一个新的时间。p(then.Add(diff))p(then.Add(-diff))
}//输出
//2024-11-12 15:57:23.595423 +0800 CST m=+0.000228772
//2009-11-17 20:34:58.651387237 +0000 UTC
//2009
//November
//17
//20
//34
//58
//651387237
//UTC
//Tuesday
//true
//false
//false
//131363h22m24.944035763s
//131363.3735955655
//7.88180241573393e+06
//4.7290814494403577e+08
//472908144944035763
//2024-11-12 07:57:23.595423 +0000 UTC
//1994-11-23 09:12:33.707351474 +0000 UTC
定时器Example
package mainimport ("fmt""time"
)func main() {// 创建一个新的计时器,设置为 2 秒timer := time.NewTimer(2 * time.Second)fmt.Println("Timer started for 2 seconds...")// 等待计时器到期<-timer.Cfmt.Println("Timer expired!")// 创建另一个计时器timer2 := time.NewTimer(3 * time.Second)go func() {// 等待计时器到期并打印<-timer2.Cfmt.Println("Timer 2 expired!")}()// 在 1 秒后停止计时器time.Sleep(1 * time.Second)stopped := timer2.Stop()if stopped {fmt.Println("Timer 2 stopped before expiration.")}// 等待一段时间以确保程序不会立即退出time.Sleep(5 * time.Second)
}//输出
//Timer started for 2 seconds...
//Timer expired!
//Timer 2 stopped before expiration.
Epoch(Unix纪元) Example
package mainimport ("fmt""time"
)func main() {//获取当前时间:time.Now() 返回当前的本地时间,并将其赋值给变量 now。now := time.Now()fmt.Println(now)//now.Unix() 返回从 1970 年 1 月 1 日 00:00:00 UTC 到当前时间的秒数(Unix 时间戳)。fmt.Println(now.Unix())//now.UnixMilli() 返回从 1970 年 1 月 1 日 00:00:00 UTC 到当前时间的毫秒数。fmt.Println(now.UnixMilli())//now.UnixNano() 返回从 1970 年 1 月 1 日 00:00:00 UTC 到当前时间的纳秒数。fmt.Println(now.UnixNano())//time.Unix(now.Unix(), 0) 将当前时间的 Unix 时间戳(秒)转换回 time.Time 类型。fmt.Println(time.Unix(now.Unix(), 0)) //第二个参数 0 表示纳秒部分,这里设置为 0。//time.Unix(0, now.UnixNano()) 将当前时间的 Unix 时间戳(纳秒)转换回 time.Time 类型。fmt.Println(time.Unix(0, now.UnixNano())) //第一个参数 0 表示秒部分,这里设置为 0。
}//输出
//2024-11-12 16:14:18.384693 +0800 CST m=+0.000127501
//1731399258
//1731399258384
//1731399258384693000
//2024-11-12 16:14:18 +0800 CST
//2024-11-12 16:14:18.384693 +0800 CST
💡 Tips小知识点
使用Time相关的注意事项:
- 明确时区:Go 默认使用 UTC 时间。确保在处理时区时明确指定,特别是在涉及用户本地时间和服务器时间的场景中。
- 使用 time.LoadLocation:可以加载特定的时区
loc, err := time.LoadLocation("Asia/Shanghai")
if err != nil {// 处理错误
}
- 选择合适的时间戳:根据需求选择使用秒、毫秒或纳秒。Unix() 返回秒,UnixMilli() 返回毫秒,UnixNano() 返回纳秒。确保你在存储或比较时间时使用一致的单位。
- 避免精度丢失:在进行时间计算时,注意可能的精度丢失,尤其是在转换不同时间单位时
- 使用 time.Duration:使用 time.Duration 类型来表示时间间隔,避免手动计算时间差
- 计时器和Ticker的并发使用:在并发环境中使用 time.Timer 和 time.Ticker 时,要确保对它们的访问是安全的,尤其是在多个协程中使用时。
- 避免频繁调用 time.Now():在性能敏感的代码中,尽量减少对 time.Now() 的频繁调用,可以将结果缓存到变量中。
💪无人扶我青云志,我自踏雪至山巅。

相关文章:
【go从零单排】Timer、Epoch 时间函数
🌈Don’t worry , just coding! 内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。 📗概念 在 Go 语言中,time.Timer 是一个用于在指定时间后执行操作的计时器。…...
壁仞科技上市前最后一波 校招 社招 内推
随着美国大选结束,国内GPU 产业得到空前的的发展空间,国内芯片相关股票一片飘红。 国内大型 GPU厂商壁仞科技,摩尔线程等正紧锣密鼓地加紧上市。 GPGPU 芯片赛道来到了史无前例的红利点,抓住机会💪 壁仞科技正在火热…...
【微软报告:多模态基础模型】(2)视觉理解
欢迎关注【youcans的AGI学习笔记】原创作品 【微软报告:多模态基础模型】(1)从专家到通用助手 【微软报告:多模态基础模型】(2)视觉理解 【微软报告:多模态基础模型】(3)…...
Linux 驱动
四十三、Linux设备树 43.1 DTS、DTB 和 DTC DTS 是设备树源码文件 DTB 是将DTS 编译以后得到的二进制文件。 DTC 工具将.dts 编译为.dtb 43.2 DTS语法 43.2.1 .dtsi 头文件 在.dts 设备树文件中,可以通过“#include”来引用.h、.dtsi 和.dts 文件。 …...
【数学二】线性代数-线性方程组-齐次线性方程组、非齐次线性方程组
考试要求 1、会用克拉默法则. 2、理解齐次线性方程组有非零解的充分必要条件及非齐次线性方程组有解的充分必要条件. 3、理解齐次线性方程组的基础解系及通解的概念,掌握齐次线性方程组基础解系和通解的求法. 4、理解非齐次线性方程组的解的结构及通解的概念. 5、会用初等行变…...
Git别名设置
在 Git 中设置命令别名可以让你更高效地使用常见的 Git 命令。通过为常用命令创建简短的别名,可以减少输入的字符数并加速工作流程。 参考链接 设置 Git 命令别名的方法: 使用 Git 配置命令: Git 允许通过 git config 命令来设置命令别名。这…...
算法基础 -- 红黑树原理与插入伪代码
红黑树原理与插入伪代码 红黑树的原理 红黑树是一种自平衡的二叉搜索树,通过对节点的颜色(红色或黑色)以及结构的约束条件来保持树的平衡。红黑树的原理可以通过以下五个特性描述: 节点是红色或黑色。根节点必须是黑色。所有叶…...
力扣 LeetCode 27. 移除元素(Day1:数组)
解题思路: 注意:数组只能覆盖,不能删除 erase方法的复杂度为O( n )而不是O( 1 ),因为需要把删除后后面的数组向前移动 方法一:双层for循环暴力 方法二:快慢指针 fast表示新数组的元素 slow表示新数组元…...
微服务链路追踪skywalking安装
SkyWalking是一个开源的分布式追踪系统,主要用于监控和分析微服务架构下的应用性能。 它提供了分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案,特别适用于微服务、云原生架构和基于容器的环境(如Docker、K8s、Mesos&…...
mqtt学习笔记(一)
以解决问题方式逐步学习探索 mqtt使用场景mqtt可能缺点mqtt学习疑问探索1、mqtt主题发布过的历史消息,全新连接的client能消费到吗?2、mqtt的client掉线如何重连,重连后订阅的topic配置还在不?3、mqtt的client掉线重连后ÿ…...
Kafka Eagle 安装教程
目录 前言 一、安装前的准备 1. 系统要求 2. 安装 JDK 3. 安装 Kafka 和 Zookeeper 4. MySQL 环境准备 二、下载并安装 Kafka Eagle 三、配置 Kafka Eagle 1. 编辑配置文件 2. 配置 Kafka 和 Zookeeper 信息 四、启动 Kafka Eagle 五、访问 Kafka Eagle 六、测试功…...
Ajax 获取进度和中断请求
HTML加入一些内容方便看效果和做交互: <div><p>当前传输进度:<span id"progress">0%</span></p><button id"send">发送</button><button id"btn">中断</button> …...
实验5:网络设备发现、管理和维护
实验5:网络设备发现、管理和维护 实验目的及要求: 通过实验,掌握Cisco 路由器和交换机的IOS配置管理。自动从NTP服务器获取时间信息。能够利用TFTP服务器实现路由器和交换机配置文件的备份和恢复。同时验证CDP协议和LLDP协议的网络参数。完…...
kafka 生产经验——数据积压(消费者如何提高吞吐量)
bit --> byte --> kb -->mb -->gb --> tb --> pb --> eb -> zb -->yb...
对等同步身份认证(Simultaneous Authentication of Equals,简称SAE)介绍
对等同步身份认证(Simultaneous Authentication of Equals,简称SAE)介绍 对等同步身份认证(Simultaneous Authentication of Equals,简称SAE)是一种基于密码的身份验证方法,用于安全地交换密钥…...
Ajax 与 Vue 框架应用点——随笔谈
老式 在老式的技术中,一个网页通常由前端工程师直接使用 HTML、CSS、JavaScript 编写而成 这种方式的优点很明显:简单粗暴,方便工程师以简单的思维完成工作 当然,缺点也很明显,包括但不限于: 直接原生开发…...
The Internals of PostgreSQL 翻译版 持续更新...
为了方便自己快速学习,整理了翻译版本,目前翻译的还不完善,后续会边学习边完善。 文档用于自己快速参考,会持续修正,能力有限,无法确保正确!!! 《The Internals of PostgreSQL 》 不是 《 PostgreSQL14 Internals 》…...
redis 原理篇 31 redis内存回收 内存淘汰策略
哦哦, 内存满了咋搞 就算过期key 删除,还是不够用, 这种问题没办法,只能了解一下啥解决方案了, 内存是有限的,一直存,肯定会满,这时,咋处理? 首先ÿ…...
微信小程序——实现二维码扫描功能(含代码)
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...
【go从零单排】HTTP客户端和服务端
🌈Don’t worry , just coding! 内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。 📗概念 在 Go 语言中,net/http 包提供了强大的 HTTP 客户端和服务器功能。 &…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...
Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...
tomcat入门
1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...
python爬虫——气象数据爬取
一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用: 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests:发送 …...
认识CMake并使用CMake构建自己的第一个项目
1.CMake的作用和优势 跨平台支持:CMake支持多种操作系统和编译器,使用同一份构建配置可以在不同的环境中使用 简化配置:通过CMakeLists.txt文件,用户可以定义项目结构、依赖项、编译选项等,无需手动编写复杂的构建脚本…...
