猿问

为什么 time.Add 方法不适用于 time.Time 格式为 time.RFC3339

此代码在格式时间中生成时间。RFC3339 在找到 24 时将小时更改为 00:00,然后应该增加日期,但是这不会发生。请分享想法:)


package main

    

import (

    "fmt"

    "strings"

    "time"

)


var dConv time.Time //contains converted time

var timeErr error


func main() {

    dateTime := "2020-01-01" + "T" + "24:00" + ":00Z"

    if strings.Contains(dateTime, "T24") {

        dateTime = strings.Replace(dateTime, "T24", "T00", 1)

        dConv, timeErr = time.Parse(time.RFC3339, dateTime)

        h := dConv

        if timeErr == nil {

            fmt.Println(h)

            h.AddDate(0, 0, 1)

            fmt.Println(h)

        }

    }

}


慕桂英546537
浏览 148回答 1
1回答

POPMUISE

该time.Add()方法不会修改接收器时间,它不能因为它不是指针接收器。相反,它会返回time.Time您未分配给任何内容的结果,因此将其丢弃。如果将其分配回h,您将看到结果增加了一天:h = h.AddDate(0, 0, 1)有了这个更改输出将是(在Go Playground上尝试):2020-01-01 00:00:00 +0000 UTC2020-01-02 00:00:00 +0000 UTC
随时随地看视频慕课网APP

相关分类

Go
我要回答