3

特定の月の最初の月曜日を取得しようとしています。

私が思いつく最善の方法は、最初の 7 日間をループして、.Weekday() == "Monday". これを行うより良い方法はありますか?

4

1 に答える 1

13

時間の .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)))
    }
}
于 2013-10-01T17:52:49.467 に答える