从时间戳中获取一年的第一天和最后一天

Get the first and last day of a year from a timestamp

给定一个时间对象 t := time.Now(),有没有办法获取该年第一天和最后一天的时间戳?

我可以做类似 d := t.YearDay() 的事情来获取一年中的天数,然后 t.AddDate(0, 0, -d) 获取年初,然后 t.AddDate(0, 0, 365-d) 获取结束年,但这似乎很脆弱,因为它不涉及闰年等。

您可以使用 Time 结构对象并使用 time.Date and time.Time.Year() 函数创建新的 Time 结构对象。因此,如果当前时间是 t := time.Now() 那么今年的最后一天在 UTC 中将是 lt := time.Date(t.Year(), time.December, 31, 0, 0, 0, 0, time.UTC)

这是一个例子:

package main

import "fmt"
import "time"

func main() {
    t := time.Now()
    last := time.Date(t.Year(), time.December,31, 0, 0, 0, 0, time.UTC)
    first := time.Date(t.Year(), time.January,1, 0, 0, 0, 0, time.UTC)

    fmt.Println("Current: ", t)
    fmt.Println("First: ", first)
    fmt.Println("Last: ", last)

}

http://play.golang.org/p/jahjd_mi6K