从时间戳中获取一年的第一天和最后一天
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)
}
给定一个时间对象 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)
}