19 Go的时间日期

概述

        在上一节的内容中,我们介绍了Go的Gob,包括:Gob简介、Gob编码、Gob解码等。在本节中,我们将介绍Go的时间日期。Go语言提供了一套强大的时间日期处理库,使得处理时间和日期变得简单和高效。Go语言中处理日期和时间的常用方式是使用time包,这个包提供了许多用于日期和时间操作的功能,包括:获取当前时间、格式化时间、计算时间差、处理时区等。

time包

        time包提供了许多用于处理日期和时间的函数,下面是一些常用的函数。

        time.Now(): 返回当前时间,类型为time.Time。

        time.Parse(layout, value): 将字符串解析为时间,并返回时间对象。layout是日期时间的布局字符串,指定了输入字符串的格式。

        time.Date(year, month, day, hour, min, sec, nanosec, loc): 返回一个指定日期和时间的时间对象。

        time.Add(d duration): 返回一个时间对象加上给定持续时间的时间对象。

        time.Sub(t time.Time): 返回两个时间之间的时间差。

        time.Since(t time.Time): 返回从指定时间到当前时间的持续时间。

        time.Until(t time.Time): 返回从当前时间到指定时间的持续时间。

        time.In(loc *time.Location): 将时间转换为指定时区的时间。

        time.Now().Format(format string): 将当前时间格式化为指定的字符串形式。format是日期时间的格式化字符串,用于指定输出的格式。

        time.ParseDuration(durationStr string) duration: 将字符串解析为持续时间,并返回持续时间对象。

格式化日期

        在下面的示例代码中,我们首先通过time.Now()函数获取到了当前时间。然后,将当前时间通过Format()函数格式化成了指定的字符串形式。最后,我们打印输出了这个字符串形式的时间。

package mainimport ("fmt""time"
)func main() {// 获取当前时间currentTime := time.Now()// 输出:2023-11-26 15:01:26.4162829 +0800 CST m=+0.002639401fmt.Println(currentTime)// 格式化时间timeString := currentTime.Format("2006-01-02 15:04:05")// 输出:2023-11-26 15:01:26fmt.Println(timeString)
}

日期字符串解析

        在下面的示例代码中,我们使用time.Parse()函数将字符串形式的日期解析成了time.Time类型的时间。

package mainimport ("fmt""time"
)func main() {// 日期字符串解析为时间对象dateString := "2023-11-26 15:50:45"// 格式化字符串,必须与输入的日期字符串格式匹配layout := "2006-01-02 15:04:05"date, err := time.Parse(layout, dateString)if err != nil {fmt.Println(err)return}// 输出:2023-11-26 15:50:45 +0000 UTCfmt.Println(date)
}

计算日期差

        在下面的示例代码中,我们首先通过time.Now()函数获取到了当前时间,并作为开始时间。然后,将开始时间添加6个小时作为结束时间。接下来,我们通过time.Sub()函数计算了开始时间与结束时间的时间差。最后,我们还计算了开始时间到当前时间的时间差、当前时间到结束时间的时间差,并进行了打印输出。

package mainimport ("fmt""time"
)func main() {startTime := time.Now()// 结束时间为开始时间后6个小时endTime := startTime.Add(6 * time.Hour)duration := endTime.Sub(startTime)// 输出时间差的小时数,输出:6fmt.Println(duration.Hours())duration = time.Since(startTime)// 计算开始时间到当前时间的时间差,输出:531.6µsfmt.Println(duration)duration = time.Until(endTime)// 计算当前时间到结束时间的时间差,输出:5h59m59.9994684sfmt.Println(duration)
}

时区操作

        在下面的示例代码中,我们使用time.LoadLocation函数加载了名为"America/New_York"的时区信息。如果加载成功,我们将当前时区的时间转换为纽约时区的时间。

package mainimport ("fmt""time"
)func main() {// 加载指定时区信息location, err := time.LoadLocation("America/New_York")if err != nil {fmt.Println(err)return}currenTime := time.Now()// 输出当前时区的时间:2023-11-26 15:26:11.3579989 +0800 CST m=+0.003050601fmt.Println(currenTime)// 将当前时间转换为指定时区的时间currentTimeLoc := time.Now().In(location)// 输出纽约时区的时间:2023-11-26 02:26:11.3706785 -0500 ESTfmt.Println(currentTimeLoc)
}

定时任务

        在Go语言中,time.Tick函数用于定期生成时间间隔。它返回一个通道,每当指定的时间间隔过去后,通道上就会收到一个时间值。time.Tick函数的语法如下:

          func Tick(d Duration) <-chan time.Time

        其中,d参数指定了生成时间间隔的持续时间。函数返回一个通道,每当持续时间过去后,就会在通道上收到一个时间值。

        在下面的示例代码中,我们使用time.Tick函数创建了一个每2秒生成一个时间值的通道。通过使用for range循环迭代该通道,我们可以每隔2秒打印出当前时间的值。

package mainimport ("fmt""time"
)func main() {// 每隔2秒,输出一次当前时间ticker := time.Tick(2 * time.Second)for range ticker {fmt.Println(time.Now())}
}

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

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

相关文章

新手引导功能,Intro.js 和driver.js 比较

Intro.js 和 driver.js 都是用于创建前端新手引导的工具&#xff0c;它们都有各自的优点和适用场景。具体选择哪个工具&#xff0c;应该根据项目需求和团队习惯来决定。 下面是对 Intro.js 和 driver.js 的简单介绍和比较&#xff1a; Intro.js&#xff1a; Intro.js 是一个轻…

算法通关村-----数据流的中位数

数据流的中位数 问题描述 中位数是有序整数列表中的中间值。如果列表的大小是偶数&#xff0c;则没有中间值&#xff0c;中位数是两个中间值的平均值。 例如 arr [2,3,4] 的中位数是 3 。 例如 arr [2,3] 的中位数是 (2 3) / 2 2.5 。 实现 MedianFinder 类: MedianFin…

大模型的实践应用8-利用PEFT和LoRa技术微调大模型(LLM)的原理介绍与指南

大家好,我是微学AI,今天给大家介绍一下大模型的实践应用8-利用PEFT和LoRa技术微调大模型(LLM)的原理介绍与指南,2023年是大语言模型爆发的元年,在我国大语言模型分布就有上百种,随着人工智能技术的不断发展,对于GPT这样的大型语言模型的规模只会变得越来越大。随着模型规…

yolov8-seg 分割推理流程

目录 一、分割检测 二、图像预处理 二、推理 三、后处理与可视化 3.1、后处理 3.2、mask可视化 四、完整pytorch代码 一、分割检测 注&#xff1a;本篇只是阐述推理流程&#xff0c;tensorrt实现后续跟进。 yolov8-pose的tensorrt部署代码稍后更新&#xff0c;还是在仓…

探索数字化转型项目的基础

从消费品到特种化学品&#xff0c;数字化转型正在各行各业中逐渐普及。然而&#xff0c;尽管使用智能化设备、连接解决方案和数据分析对改造升级制造运营模式有巨大帮助&#xff0c;但起步过程&#xff08;奠定一个良好的基础来支撑工厂的可访问性、可靠性、可维护性、可扩展性…

java中IO知识点概念

这里写自定义目录标题 内存中的数据以电子信号的形式表示&#xff0c;而磁盘中的数据是以磁场的方向表示。1.流的分类2.File类3.流的API 关键4.理解缓冲的作用-一次性多拿些读写文件的时候为什么要有缓冲流 -意义是什么缓冲流的使用 5.路径问题6.文件的创建7.内存和磁盘存储本质…

【3D程序软件】SideFX与上海道宁一直为设计师提供程序化 3D动画和视觉效果工具,旨在创造高质量的电影效果

Houdini是一个 从头开始构建的程序系统 使艺术家能够自由工作 创建多次迭代 并与同事快速共享工作流程 Houdini FX为 视觉特效艺术家创作故事片 广告或视频游戏 凭借其基于程序节点的工作流程 Houdini FX可让 您更快地创建更多内容 从而缩短时间并 在所有创意任务中…

ESP Multi-Room Music 方案:支持音频实时同步播放 实现音乐互联共享

项目背景 随着无线通信技术的发展&#xff0c;针对不同音频应用领域的无线音频产品正不断涌现。近日&#xff0c;乐鑫科技推出了基于 Wi-Fi 的多扬声器互联共享音乐通信协议——ESP Multi-Room Music 方案。该方案使用乐鑫自研的基于 Wi-Fi 局域网的音频同步播放技术&#xff…

51单片机使用串口查看程序执行的数据

51单片机使用串口查看程序执行的数据 1.概述 这篇文章介绍利用串口输出程序执行的数据&#xff0c;辅助我们调试程序&#xff0c;提高代码定位问题的效率。 2.硬件电路原理 3.串口助手查看程序数据 输出串口数据的方式分为CPU查询方式和中断方式。他们各有优缺点&#xff0…

源码剖析 Spring Security 的实现原理

Spring Security 是一个轻量级的安全框架&#xff0c;可以和 Spring 项目很好地集成&#xff0c;提供了丰富的身份认证和授权相关的功能&#xff0c;而且还能防止一些常见的网络攻击。我在工作中有很多项目都使用了 Spring Security 框架&#xff0c;但基本上都是浅尝辄止&…

springboot(ssm健身器材用品网 健身用品商城Java(codeLW)

开发语言&#xff1a;Java 框架&#xff1a;ssm/springboot vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&#xff1a;mysql 5.7&#xff08;或8.0&#xff09; 数据库工具&#xff1a;Navicat 开发软件&#xff1a;ecl…

Java 8 中 ReentrantLock 与 Synchronized 的区别

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

《微信小程序开发从入门到实战》学习三十五

4.2 云开发JSON数据库 4.2.3 权限控制 在云开发控制台可以对数据库中的数据进行操作&#xff0c; 在小程序端和云函数可以分别使用小程序API和服务端API对数据中的数据进行操作。 以上操作受到权限控制。 对数据库进行查询属于读操作&#xff0c;增删改操作属于写操作。 …

Day44力扣打卡

打卡记录 给小朋友们分糖果 II&#xff08;容斥原理 隔板法&#xff09; 链接 def c2(n):return n * (n - 1) // 2 if n > 1 else 0class Solution:def distributeCandies(self, n: int, limit: int) -> int:return c2(n 2) - 3 * c2(n - limit 1) 3 * c2(n - 2 * …

Python实现byte数或者整数的循环位移

文章目录 1 Introduction2 Code2.1 Output2.2 复杂度分析 参考资料 Bit Rotation: A rotation (or circular shift) is an operation similar to a shift except that the bits that fall off at one end are put back to the other end. In the left rotation, the bits that …

结构体训练

1. 评委打分 【问题描述】 校园卡拉OK比赛设置了7名评委&#xff0c;当一名选手K完歌之后&#xff0c;主持人报出歌手名字后&#xff0c;7位评委同时亮分&#xff0c;按照惯例&#xff0c;去掉一个最高分和一个最低分后&#xff0c;其余5位评委评分总和为该选手的最终得分。 一…

uniapp+微信小程序监听返回事件

代码附在最后 适用场景&#xff1a;uniapp开发微信小程序 需求是我点击列表进入数据信息的详情界面&#xff0c;点击详情界面的收藏&#xff0c;返回上一界面后&#xff0c;更新列表中的收藏情况。 目录 一、使用onUnload监听页面卸载 二、使用getCurrentPages()获取当前页…

【双指针】四数之和

四数之和 建议做过了解三数之和的思想再做这道题&#xff0c;思路是一样的~ 题目描述 18. 四数之和 - 力扣&#xff08;LeetCode&#xff09; 给你一个由 n 个整数组成的数组 nums &#xff0c;和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [num…

搞定ESD(六):静电放电问题典型案例分析(一)

文章目录 一、接触放电测试出现系统自动待机问题案例分析(一)1. 问题现象描述2. 问题现象分析3. 问题分析验证过程3.1 MCU芯片供电电源稳定性分析验证3.2 MCU芯片复位电路稳定性验证4. 问题分析产生原因分析5. 问题解决方案6. 案例总结二、接触放电测试出现系统自动待机问题案…

Java大型智慧工地APP云平台源码带AI智能识别功能

智慧工地为建筑全生命周期赋能&#xff0c;用创新的可视化与智能化方法&#xff0c;降低成本&#xff0c;创造价值。 一、智慧工地APP概述 智慧工地”立足于互联网&#xff0c;采用云计算&#xff0c;大数据和物联网等技术手段&#xff0c;针对当前建筑行业的特点&#xff0c;…