百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

嘿,轻松获取区间内所有日期的Golang小技巧!

liuian 2025-02-04 15:05 83 浏览

在Go语言中,获取两个日期之间的所有日期可以手动实现一个函数来完成。以下是一个示例函数,它会返回一个日期切片,包含从开始日期到结束日期(包括这两个日期)的所有日期:

package main

import (
	"time"
)

// getDatesInRange 返回从 startDate 到 endDate(包括这两个日期)的所有日期。
func getDatesInRange(startDate time.Time, endDate time.Time) []time.Time {
	dates := make([]time.Time, 0)
	currentDate := startDate

	for currentDate.Before(endDate) || currentDate.Equal(endDate) {
		dates = append(dates, currentDate)
		currentDate = currentDate.AddDate(0, 0, 1) // 添加一天
	}

	return dates
}

func main() {
	startDate := time.Now() // 假设从当前日期开始
	endDate := startDate.AddDate(0, 1, 0) // 假设结束日期是下个月今天 .Add(-24 * time.Hour)

	datesInRange := getDatesInRange(startDate, endDate)
	for _, date := range datesInRange {
		// 输出日期,格式化为 YYYY-MM-DD
		formattedDate := date.Format("2006-01-02")
		println(formattedDate)
	}
} 

// 输出
2024-07-30
2024-07-31
2024-08-01
2024-08-02
2024-08-03
2024-08-04
2024-08-05
2024-08-06
2024-08-07
2024-08-08
2024-08-09
2024-08-10
2024-08-11
2024-08-12
2024-08-13
2024-08-14
2024-08-15
2024-08-16
2024-08-17
2024-08-18
2024-08-19
2024-08-20
2024-08-21
2024-08-22
2024-08-23
2024-08-24
2024-08-25
2024-08-26
2024-08-27
2024-08-28
2024-08-29
2024-08-30

这个函数首先创建一个日期切片 dates,然后使用一个 for 循环来逐天递增日期。currentDate.Before(endDate) 检查当前日期是否早于结束日期,而 currentDate.Equal(endDate) 确保包含结束日期本身。currentDate.AddDate(0, 0, 1) 用于将当前日期增加一天。

这个示例使用了 time.Time 类型,它是Go语言中处理日期和时间的标准方式。可以根据需要调整 startDateendDate 的值,以及格式化输出的日期格式。

相关推荐

显卡品牌排行榜2020天梯图(显卡天品牌天梯)

一七彩虹显卡二华硕显卡三微星显卡四影驰显卡五技嘉显卡六蓝宝石显卡七索泰显卡八铭瑄显卡  Mx350,相当于顶级显卡20%水准  Acco...

iso文件打开(iso文件打开方式)

ISO文件是一种光盘映像文件,可以使用Windows资源管理器、专业软件或虚拟光驱软件打开。使用Windows资源管理器打开ISO文件,将ISO文件下载到电脑中,找到ISO文件所存放的文件夹,双击IS...

email(email可以填QQ邮箱吗)

Email是英文“ElectronicMail”的缩写,中文意思是“电子邮件”。它是一种通过网络传输的电子邮件系统,可以在全球范围内进行快速、安全、低成本的信息传递。Email的使用非常广泛,几乎所...

华为手机系统修复软件(华为手机 系统修复)

如果您的华为手机自带的手机管家受损了,可以尝试以下方法进行恢复:清除手机管家的缓存和数据:在手机设置中找到“应用管理”,然后找到“手机管家”应用,点击进入后选择“存储空间”,然后点击“清除缓存”和“清...

电脑公司负责人英语(公司负责人的英文单词)

managerdirectorregionalmanager英[?ri:d??n?l?m?nid??]美[?rid??n?l?m?n?d??]区域经理例句ThenIwould...

win7投屏手机(win7手机投屏软件)
  • win7投屏手机(win7手机投屏软件)
  • win7投屏手机(win7手机投屏软件)
  • win7投屏手机(win7手机投屏软件)
  • win7投屏手机(win7手机投屏软件)
您的ip已被风控怎么解除(你的ip被占用)

风控账号指的是因违反了相关协定要求而被进行风险控制管理的账号,风险管理者采取各种措施和方法,消灭或减少风险事件发生的各种可能性,减少风险事件发生时造成的损失,正常情况下,风控用户会收到风险回避、损失控...

磁力链除了迅雷还有什么软件能用

推荐黑科技APP黑科下载器APP也是一款功能强大且使用的下载类工具应用,它支持磁力以及种子文件的下载。还可以把下载的的文件转存到云盘,并支持在线的云播预览功能,无需等待能直接边下边播。还是老老实实的使...

仓颉输入法怎么用(仓颉输入法新手入门)
  • 仓颉输入法怎么用(仓颉输入法新手入门)
  • 仓颉输入法怎么用(仓颉输入法新手入门)
  • 仓颉输入法怎么用(仓颉输入法新手入门)
  • 仓颉输入法怎么用(仓颉输入法新手入门)
电脑黑屏自动重启是什么原因

是内存或者显卡金手指被氧化了,造成这个内存和内存槽接触不良,显卡和显卡槽接触不良,引起的硬件不兼容现象,而导至的黑屏,自动重启现象。(有时伴有重启现象,有时重装系统后会好一会儿,但过一会儿又问题如旧)...

笔记本win10系统怎么样(笔记本win10系统怎么样设置密码)

Windows10操作系统也是微软公司推出的Windows操作系统的比较新的一款软件。Windows10操作系统属于Windows的一种,所以说两个没有可比性,也没法对比。可能是你提的问题,提错了...

正版xp镜像(xp镜像精简版)

安装xp原版系统iso镜像的步骤如下:解压下载好的xp原版系统iso镜像文件。下载安装“系统之家一键重装系统”工具,选择“u盘模式”。插入U盘,将U盘容量足量,保持8G以上。在页面中选择需要下载的xp...

主流电脑配置单(电脑配置推荐2021)

电脑是人们日常生活或工作都会使用到的产品,购买到一台好的电脑,能让你的生活更顺心,让你的工作更有效率。但许多人在购买第一台电脑时,总是不知道该如何选择,不知道主要看哪些配置?买电脑主要看的配置有用途、...

win7专业版bitlocker找不到(win7旗舰版bitlocker找不到)

如果在Windows7中启用BitLocker加密,但是在操作中遇到了“找不到BitLocker”问题,需要检查计算机是否支持TPM(TrustedPlatformModule)技术,并确保已将...

路由器接路由器设置教程详细

1、第一个路由器的IP地址很简单,用网线将电脑与第一个路由器链接,然后选择本地链接——状态——详细信息,这个时候就可以看到第一个路由器的IP地址为192.168.101.1。2、将第二个路由器通电,用...