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

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

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

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

相关推荐

英伟达显卡驱动下载位置(英伟达显卡驱动下载路径)

nvidia显卡官网下载驱动到哪个磁盘都行,只有有足够的空间就行。下载完安装之后你可以把显卡的安装包删了不然会占用你一个g的储存空间。显卡驱动越新越好,因为越新的显卡驱动就意味着越好的优化和越高的性能...

免费的nas系统中文版(nas软件下载)

将nas通过网线直连到电脑上或者连接到路由上。然后通过电脑访问nas的ip地址即可。NAS(网络附加存储)是一种用于存储和共享文件的设备。虽然一般情况下NAS主要是用于安装和运行NAS操作系统,如Fr...

u启通(u启通万能驱动怎么用)

1、首先下载优启通制作工具,然后制作U盘启动盘,完成后将U盘插在电脑上。  注意:如果U盘需要存放的系统镜像文件大于4GB,建议U盘制作时选择exFAT或NTFS格式。  2、然后我们重启电脑,在开机...

打印机拒绝访问怎么解决(打印机拒绝访问是怎么回事)
  • 打印机拒绝访问怎么解决(打印机拒绝访问是怎么回事)
  • 打印机拒绝访问怎么解决(打印机拒绝访问是怎么回事)
  • 打印机拒绝访问怎么解决(打印机拒绝访问是怎么回事)
  • 打印机拒绝访问怎么解决(打印机拒绝访问是怎么回事)
电脑忘了密码开不了机怎么办

1、首先将电脑开机,在输入密码的界面,点击右下角【电脑】图标;  2、在弹出电源选项之后,按住【Shift】键,同时鼠标点击【重启】选项,让电脑进入Windows启动设置菜单中;  3、在出现的选项W...

戴尔售后在线咨询(戴尔售后在线咨询服务)

戴尔中国的官方网站http://www.dell.com/zh-cn。通过这个网站购买的都没有问题;有问题也可以进入官网联系售后客服,也可以拔打dell电脑说明书上的售后热线,都可以为你解决的。还是建...

下载万能播放器(下载万能播放器手机版官方版)

在车内使用的万能视频播放器可以用于播放各种格式的音频和视频文件,以便在车载媒体系统上进行播放。要下载车用万能视频播放器,您可以按照以下步骤操作:1.在您的设备上,打开GooglePlay商店,...

网络测速器在线测速手机(网络测速器在线测网速)

1、每个手机都有测量网速的功能,打开手机后找到【安全中心】并点击。2、打开了手机的安全中心界面后在常用工具下方找到并点击打开【网络诊断】。3、然后在网络诊断的界面显示的是当前实时的网速,想要测量点击右...

笔记本cpu型号详解(笔记本cpu型号详解大全)
笔记本cpu型号详解(笔记本cpu型号详解大全)

笔记本的CPU型号可以通过以下步骤进行查看:1.打开电脑,进入系统桌面环境。2.在Windows系统中,右键点击“我的电脑”,选择“管理”,进入“设备管理器”。3.在“设备管理器”中,展开“处理器”选项,即可看到笔记本的CPU型号...

2026-01-07 18:05 liuian

电脑黑屏后无法开机(电脑黑屏后无法开机了)
电脑黑屏后无法开机(电脑黑屏后无法开机了)

1、连上电源,确认一下是不是因为电脑不足而导致黑屏。2、可以尝试连接外置屏幕看看显卡输出是否正常,若外置屏幕可以正常显示,则说明电脑屏幕或排线出现了问题,建议送去维修店进行维修。3、开机黑屏,系统有声音,外接屏幕异常,可能是显卡或者主板出现...

2026-01-07 17:55 liuian

microsoftofficeexcel2007(microsoftofficeexcel2007免费完整版)

MicrosoftOffice是微软公司开发的一套基于Windows操作系统的办公软件套装。常用组件有Word、Excel、Access、Powerpoint、FrontPage等。目前最新版本为O...

电脑win8下载默认c盘怎么改(电脑下载默认c盘,怎么更改成d盘win10)

1首先,通过左下角的开始键进入windows设置窗口中,然后单击系统,进入系统设置主页。2点击存储,下拉右边列表,找到更改存储设置,点击进入页面进行设置,设置新的应用内容保存位置,哪个盘符内存大放在哪...

仙剑奇侠传5前传激活码免费领取

前传的话游戏任意版本都可以直接安装语音包的,1.03是DLC升级包,和语音包无关,无需升级即可使用语音,不过还是推荐把游戏升级到最新版本(目前最新版本是1.04),可以修正游戏中一些问题。首先双击仙...

qq官方最新版下载(qq官方下载最新版2020)

这个应该是广告一样的提示,或者说官网检测不到你是否下载了QQ最好从QQ官网下最新版安装!从QQ官网下最新版安装QQ下载时就会有所提示的,在安装时你可以进行选择性的安装,那些附带的程序你可以不用的,不要...

tplink千兆版管理员密码(tplinktlwdr5620千兆版管理员密码)

tp-link默认的管理员密码:admin,可以在路由器底部标贴中查看到;  2、新版本的TP-Link路由器,没有默认登录密码了;新版的TP-link需要打开tplogin.cn作为管理页面登陆,默...