golang生成12个月

该文章介绍了一个名为GetMonthTimeCycle的Go语言函数,它接受年份作为参数,通过计算生成每个月的时间周期,包括开始时间和结束时间。
摘要由CSDN通过智能技术生成

// GetMonthTimeCycle 获取月份周期
// 参数 year 年份
func GetMonthTimeCycle(year int) (*[]TimeCycle, error) {
	var yearstart time.Time

	var start time.Time
	var end time.Time
	var no int
	var name string
	var loc, err = time.LoadLocation("Local")
	if err != nil {
		return nil, err
	}
	yearstart, err = time.ParseInLocation("2006-01-02 15:04:05", fmt.Sprintf("%d", year)+"-01-01 00:00:00", loc)
	if err != nil {
		return nil, err
	}

	var timeCycles []TimeCycle
	for i := 0; i <= 11; i++ {
		start = yearstart.AddDate(0, i, 0)
		end, err = time.ParseInLocation("2006-01-02 15:04:05", start.AddDate(0, 1, -1).Format("2006-01-02")+" 23:59:59", loc) //加一月 减一天得到月尾
		if err != nil {
			return nil, err
		}
		no, _ = strconv.Atoi(start.Format("200601"))
		name = fmt.Sprintf("%d年%d月", start.Year(), start.Month())
		timeCycles = append(timeCycles, TimeCycle{
			No:        no,
			Name:      name,
			StartTime: start,
			EndTime:   end,
		})
	}
	return &timeCycles, nil
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值