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

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

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

在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 的值,以及格式化输出的日期格式。

相关推荐

第二个路由器怎么设置无线网络

(1)首先,将两个路由器连接到相同的因特网源,并确保它们处于同一子网中。(2)在两个路由器上启用无线,并确保它们使用相同的无线频道和安全类型。(3)为两个路由器设置不同的SSID(无线网络名称),以便...

u盘安装win7正版(用u盘安装正版wind7系统)

U盘装系统步骤:1、制作启动盘。(W7系统4GU盘,XP系统2GU盘)下载老毛桃u盘启动制作工具,安装软件,启动,按提示制作好启动盘。2、下载一个你要安装的系统,压缩型系统文件解压(ISO型系统文件直...

1050ti显卡什么水平(GTX1050ti显卡什么水平)

中端显卡。1050ti显卡定位属于中高端显卡,放在现在属于中端显卡,gtx1050ti配备了更高规格的架构、更高的CUDA流放处理数量,并且拥有更大的显存,而且它的功耗适中。gtx1050ti是和gt...

联想笔记本键盘介绍图(联想笔记本键盘位置图)

FN+F2:切断/接通无限网卡信号FN+F3:显示器切换FN+F6:静音/解除静音FN+F8:增加屏幕亮度FN+F9:减低屏幕亮度FN+SCRLK:等于按下BREAK键FN+INSERT:为笔记本小键...

win10企业版ltsc官网下载(windows10 企业版 ltsc)

WINDOWS10下载后应该放入u启动盘准备安装。在安装WINDOWS10的时候,首先我们应该用U盘启动大师或大白菜等软件生成一个u启动盘,随后将下载的gosh版WINDOWS10放入该U盘内,将...

声卡驱动装不上怎么办(声卡驱动一直安装失败,修复不了)

安装声卡驱动。(一)右击“我的电脑”----“属性”---“硬件”----“设备管理器”,展开“声音、视频和游戏控制器”,看前面有没有黄色的“?”,有,说明缺声卡驱动,没有,说明该声卡驱动不能正常使...

hotmail邮箱怎么登陆(怎样登陆hotmail邮箱)

打开hotmail,自己的邮箱地址一般在左上角,你可以直接看到了。1、首先打开hotmail邮箱登陆页面,点击无法访问你的账户:2、选择我忘记了密码,点击下一步:3、输入要找回的账号和验证码,然后点击...

microsoft有必要留着吗(有必要microsoft账户)

还是有必要开的,因为OneDrive会自动将设备中的图片上传到云端保存,这样的话即使设备出现故障,用户仍然可以从云端获取和查看图片。特别是一些办公方面的,这样不用担心自己花了很久时间才做好的文件会丢失...

笔记本电脑最好排行榜(十大公认最耐用笔记本)

第一名:联想拯救者y9000k2020款(i710875H/32GB/1TB/RTX2080SuperMaxQ),第二名:雷神911P1Plus(i710875H/32GB/2TB/RTX20...

win7锁屏密码忘了怎么解开(win7锁屏密码忘了怎么解开手机)

如果你的电脑已经登录到系统,但是忘了密码,这种情况最简单;然后,右击用户名,点修改密码便可,无需输入久密码便可修改;如果系统无法登录,但是安装过DOS或者一键恢复,或者MAXDOS等,则可直接...

win11任务栏太宽了怎么变窄(win11任务栏太大了)

不能变窄,任务栏是锁定的,他不能够变成,如果你觉得任务栏影响到你的阅读,你可以采取将其隐藏的方式不显示其出现 具体方法如下:1、在Cortana搜索栏输入regedit,按回车进入注册表编辑器;2...

罗技鼠标宏(罗技鼠标宏会不会封)

1、选择板载内存或者如图下方的小鼠标进行设置;2、先以板载内存为例子(板载内存是鼠标自带的储存,设置完保存后,鼠标连接另一部电脑可以直接用),点进去;3、将鼠标指针已到任意按键上,右键点击编辑;4、点...

0%电源已接通 未充电(0%电源已接通,充电中,但不会提升电量)

1首先检查笔记本电池设置是否禁用了电池充电,另外一些笔记本电池管理软件也有禁用充电功能,大家可以检查一下;2也有可能是因为电池放的太久没用了导致内部有些地方接触不良,建议打开笔记本清清灰,把电源接口用...

系统工具箱下载(系统工具包)

下载时可能会被系统拦截因为下载软件时可能会碰到系统卡顿,下载失败等情况,或者某些系统会将下载的软件和工具视为病毒,然后将其拦截,进而导致无法下载为了避免系统拦截,可以先关闭系统的杀毒软件,或者选择可靠...

笔记本cpu正常温度(笔记本cpu正常温度区间)

笔记本电脑CPU的正常温度在一定程度上取决于其型号、制造工艺和散热系统等因素。一般来说,CPU在正常情况下的温度应该保持在50-80℃之间,超过80度就需要考虑散热问题。如果CPU的温度过高,可能会导...