求每月有几周【Golang】

本文介绍如何利用Golang的time包来计算一个月中包含的完整周数,通过示例代码展示具体实现方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package main

import (
    "fmt"
    "time"
)

func main() {

    d := time.Now()                                                                                                                                                                                                
    n := GetWeekNumOfMonth(d)

    fmt.Println(d, "weeks num:", n)
}

//包含周三,才算这周是这个月的
func GetWeekNumOfMonth(d time.Time) int {
    d1 := d.AddDate(0, 0, -d.Day()+1)

    d2 := d.AddDate(0, 0, -d.Day()+1).AddDate(0, 1, -1)

    days := int(((d2.Sub(d1).Hours())/24 + 1))

    fmt.Println("days:", days)

    weeks := 0
    if d1.Weekday() <= time.Wednesday {
        weeks += 1
        days -= (6 - int(d1.Weekday()) + 1)
    }

    if d2.Weekday() >= time.Wednesday {
        weeks += 1
        days -= (int(d1.Weekday()) + 1)
    }
    weeks += (days / 7)

    return int(weeks)
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值