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

Beb*_*bbs 1 time go

鉴于时间对象,t := time.Now()有没有办法在那一年的第一天和最后一天获得时间戳?

我可以做一些事情,比如d := t.YearDay()获得一年中的天数,然后t.AddDate(0, 0, -d)获得今年的开始,并t.AddDate(0, 0, 365-d)获得今年年底,但这似乎很脆弱,因为它不涉及闰年等.

cod*_*eak 6

您可以使用Time结构对象并使用time.Datetime.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)

}
Run Code Online (Sandbox Code Playgroud)

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