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

如果我有一个字符串,例如今天的日期,格式为“今天是6月30日星期三”,我可以用以下格式解析它:

time.Parse("Today is Mon, Jan 2")

年份不包括在内,因此默认为 0000。如何让它解析日期并默认为当前年份?我可以想出一些丑陋的解决方法,比如获取年份并将其附加到字符串中,然后再次解析它,但我猜有更好的方法。


慕妹3242003
浏览 139回答 3
3回答

ibeautiful

将当前年份添加到解析字符串的结果中: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)在操场上运行一个示例。

慕田峪4524236

你可以通过使用方法默认为当前年份而不是0000,但它需要你做一些字符串转换,我已经创建了一个描述相同逻辑的代码:strings.Replace()package mainimport (    "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 UTC2009-11-10 23:00:00 +0000 UTC m=+0.0000000012009-07-01 00:00:00 +0000 UTC

慕桂英4014372

只需在解析后立即设置它即可。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())
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java