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)
}