Go打印一年内每个月的起始时间与终止时间

该Go程序用于打印从2022年开始的一年中每个月的起始和终止时间。通过`GetMonthIntervalMapping`函数计算给定年份和月份的首日和末日,并以指定格式显示。程序正确地考虑了不同月份的天数差异,包括二月的闰年情况。
摘要由CSDN通过智能技术生成

Go打印一年内每个月的起始时间与终止时间

package main

import (
	"fmt"
	"time"
)

var timeFotmat = "2006-01-02 15:04:05"

func main() {
	for i := 1; i <= 12; i++ {
		start, end := GetMonthIntervalMapping(2022, i)
		fmt.Printf(start + "\t" + end + "\n")
	}
}

func GetMonthIntervalMapping(year int, month int) (string, string) {
	now := time.Now()
	date := now.AddDate(-now.Year()+year, int(-now.Month())+month+1, -now.Day())
	start := GetFirstDateOfMonth(date).Format(timeFotmat)
	end := GetLastDateOfMonth(date).Format(timeFotmat)
	return start, end
}

func GetLastDateOfMonth(d time.Time) time.Time {
	date := GetFirstDateOfMonth(d).AddDate(0, 1, -1)
	date = date.Add(time.Hour*23 + time.Minute*59 + time.Second*59)
	return date
}

func GetFirstDateOfMonth(d time.Time) time.Time {
	d = d.AddDate(0, 0, -d.Day()+1)
	return time.Date(d.Year(), d.Month(), d.Day(), 0, 0, 0, 0, d.Location())
}

测试执行

2022-01-01 00:00:00     2022-01-31 23:59:59
2022-02-01 00:00:00     2022-02-28 23:59:59
2022-03-01 00:00:00     2022-03-31 23:59:59
2022-04-01 00:00:00     2022-04-30 23:59:59
2022-05-01 00:00:00     2022-05-31 23:59:59
2022-06-01 00:00:00     2022-06-30 23:59:59
2022-07-01 00:00:00     2022-07-31 23:59:59
2022-08-01 00:00:00     2022-08-31 23:59:59
2022-09-01 00:00:00     2022-09-30 23:59:59
2022-10-01 00:00:00     2022-10-31 23:59:59
2022-11-01 00:00:00     2022-11-30 23:59:59
2022-12-01 00:00:00     2022-12-31 23:59:59
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值