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

Given a time object, t := time.Now(), is there a way I could get a timestamp for the first and last days of that year?

I could do something like d := t.YearDay() to get the number of days through the year, and then t.AddDate(0, 0, -d) to get the start of the year, and t.AddDate(0, 0, 365-d) to get the end of the year, but that seems to brittle as it doesn't deal with leap years etc.

You can use your Time struct object and create new Time struct object using time.Date and time.Time.Year() functions. So, if current time is t := time.Now() then last day in this year in UTC will be lt := time.Date(t.Year(), time.December, 31, 0, 0, 0, 0, time.UTC)

Here's an example:

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