一尘不染

如何在Go中获得给定月份的第一个星期一?

go

我正在尝试获取给定月份的第一个星期一。

我想出的最好方法是在前7天循环浏览,然后在返回时返回.Weekday() == "Monday"。有一个更好的方法吗?


阅读 324

收藏
2020-07-02

共1个答案

一尘不染

通过查看时间的.Weekday(),您可以计算第一个星期一。

package main

import (
    "fmt"
    "time"
)

// FirstMonday returns the day of the first Monday in the given month.
func FirstMonday(year int, month time.Month) int {
    t := time.Date(year, month, 1, 0, 0, 0, 0, time.UTC)
    return (8-int(t.Weekday()))%7 + 1
}

func main() {
    for m := 1; m <= 12; m++ {
        fmt.Println(m, FirstMonday(2013, time.Month(m)))
    }
}
2020-07-02