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

golang 如何解析没有年份的时间,但默认为当前年份

golang 如何解析没有年份的时间,但默认为当前年份

慕妹3242003 2022-09-12 16:30:40
如果我有一个字符串,例如今天的日期,格式为“今天是6月30日星期三”,我可以用以下格式解析它:time.Parse("Today is Mon, Jan 2")年份不包括在内,因此默认为 0000。如何让它解析日期并默认为当前年份?我可以想出一些丑陋的解决方法,比如获取年份并将其附加到字符串中,然后再次解析它,但我猜有更好的方法。
查看完整描述

3 回答

?
ibeautiful

TA贡献1993条经验 获得超5个赞

将当前年份添加到解析字符串的结果中:


t, err := time.Parse("Today is Mon, Jan 2", "Today is Wed, Jun 30")

if err != nil {

    log.Fatal(err)

}

t = t.AddDate(time.Now().Year(), 0, 0)

在操场上运行一个示例


查看完整回答
反对 回复 2022-09-12
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

你可以通过使用方法默认为当前年份而不是0000,但它需要你做一些字符串转换,我已经创建了一个描述相同逻辑的代码:strings.Replace()


package main


import (

    "fmt"

    "log"

    "strconv"

    "strings"

    "time"

)


func main() {


    t, err := time.Parse("Today is Mon, Jan 2", "Today is Thu, Jul 1")

    if err != nil {

        log.Fatal(err)

    }

    fmt.Println("t ", t)

    fmt.Println(time.Now())

    year := time.Now().Year()


    fmt.Println(strings.Replace(t.String(), "0000", strconv.Itoa(year), 1))


}

输出:


t  0000-07-01 00:00:00 +0000 UTC

2009-11-10 23:00:00 +0000 UTC m=+0.000000001

2009-07-01 00:00:00 +0000 UTC


查看完整回答
反对 回复 2022-09-12
?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

只需在解析后立即设置它即可。


t, err := time.Parse("Today is Mon, Jan 2", "Today is Mon, Jan 2")

if err != nil {

    panic(err)

}

t = time.Date(time.Now().Year(), t.Month(), t.Day(), t.Hour(), t.Minute(), t.Second(), t.Nanosecond(), t.Location())



查看完整回答
反对 回复 2022-09-12
  • 3 回答
  • 0 关注
  • 101 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信