3 回答
TA贡献1803条经验 获得超6个赞
如果你指的是日数,那么它通常从1到365(或闰年为366)。因为只有这样,2021年的第35天才对应于2021-02-04。
只是使用时间。日期,它将正确转换超出范围的参数:day
月、日、小时、分钟、秒和 nsec 值可能超出其通常范围,并将在转换过程中进行规范化。例如,10 月 32 日转换为 11 月 1 日。
例:
package main
import (
"fmt"
"time"
)
func main() {
year, day := 2021, 35
dt := time.Date(year, 1, day, 0, 0, 0, 0, time.Local)
fmt.Println(dt.Format("2006-01-02"))
}
指纹:
2021-02-04
如果你实际上指的是日数0到364(或365表示闰年),那么请改为:dayday+1
dt := time.Date(year, 1, day+1, 0, 0, 0, 0, time.Local)
TA贡献1812条经验 获得超5个赞
这样做是这样的:
package main
import (
"fmt"
"time"
)
func dayOfYear(year, days int) time.Time {
return time.Date(year, 1, 1+days, 0, 0, 0, 0, time.UTC)
}
func main() {
t := dayOfYear(2021, 35)
fmt.Println(t)
}
虽然,你的数学是关闭的,因为35天将是2月5日,因为一年从1月1日开始,而不是1月0日。
https://golang.org/pkg/time#Date
TA贡献1847条经验 获得超11个赞
这可能是您要查找的内容,请确保将区域替换为需要显示时间字符串的区域。
package main
import (
"fmt"
"time"
)
func main() {
var layout = "2006-01-02"
zone := time.UTC
year := 2021
day := 35
time := time.Date(year,1,day,0,0,0,0,zone)
converted := time.Format(layout)
fmt.Println(converted)
}
- 3 回答
- 0 关注
- 258 浏览
添加回答
举报
