为了账号安全,请及时绑定邮箱和手机立即绑定

如何从Golang的年号和年份的日期中获取格式为“yy-mm-dd”的日期?

如何从Golang的年号和年份的日期中获取格式为“yy-mm-dd”的日期?

Go
跃然一笑 2022-09-05 10:51:22
我正在尝试使用输入一年中的日期数字(0到365)以“yy-mm-dd”格式格式化日期。作为输入:035和2021输出:2021-02-04我真的不知道Go的时间库是否能简单地帮助做到这一点。任何人都有任何想法要这样做?
查看完整描述

3 回答

?
慕码人8056858

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)


查看完整回答
反对 回复 2022-09-05
?
慕雪6442864

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


查看完整回答
反对 回复 2022-09-05
?
回首忆惘然

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)

}


查看完整回答
反对 回复 2022-09-05
  • 3 回答
  • 0 关注
  • 258 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号