登录
首页 >  Golang >  Go问答

为什么不能直接使用 time.Add 方法来为格式为 time.RFC3339 的 time.Time 变量增加日期?

来源:stackoverflow

时间:2024-02-28 18:42:21 373浏览 收藏

有志者,事竟成!如果你在学习Golang,那么本文《为什么不能直接使用 time.Add 方法来为格式为 time.RFC3339 的 time.Time 变量增加日期?》,就很适合你!文章讲解的知识点主要包括,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

问题内容

此代码以 time.rfc3339 格式创建时间。当找到 24 时,rfc3339 将小时更改为 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)
        }
    }
}

解决方案


time.Add() 方法不会修改接收器时间,它不能,因为它不是指针接收器。相反,它返回结果 time.time ,您没有将其分配给任何内容,因此它被丢弃。

如果将其分配回 h,您将看到结果增加一天:

h = h.adddate(0, 0, 1)

通过此更改,输出将是(在 Go Playground 上尝试):

2020-01-01 00:00:00 +0000 UTC
2020-01-02 00:00:00 +0000 UTC

到这里,我们也就讲完了《为什么不能直接使用 time.Add 方法来为格式为 time.RFC3339 的 time.Time 变量增加日期?》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>