Posted at

Goでその年の日数を数える

うるう年だったら366, それ以外だったら365になるやつ。

うるう年判定を実装してもいいのだけど、t.YearDay()というメソッドがあったので、12月31日がYearDayで何日目か調べるという技がありそう。

package main

import (
"fmt"
"time"
)

func main() {
for y := 2010; y < 2021; y++ {
fmt.Println(y, CountYearDay(y))
}
}

func CountYearDay(year int) int {
lastday := time.Date(year, 12, 31, 0, 0, 0, 0, time.UTC)
return lastday.YearDay()
}

実行結果

2010 365

2011 365
2012 366
2013 365
2014 365
2015 365
2016 366
2017 365
2018 365
2019 365
2020 366