【问题标题】:subtract time now from gorm create at in golang现在从 gorm create at in golang 中减去时间
【发布时间】:2022-01-24 11:42:53
【问题描述】:

我正在尝试从数据库中创建的列中找到现在时间之间的时差

我在数据库中返回一行,我有created_at 列,时间格式如下

{"id":1,"email":"fUPvyBA@FApYije.ru","timezone":"pacific time","created_at":"2022-01-23T02:45:01.241589Z","updated_at":"2022-01-23T02:46:01.241591Z"}

所以created_at = 2022-01-23T02:45:01.241589Z

time.Now() = 2022-01-24 03:24:56.215573343 +0000 UTC m=+1325.103447033

我测试了以下

import (
    "fmt"
    "time"
)

func TestTime() {

    timestart := "2022-01-23T02:45:01.241589Z"
    timeend := time.Now()
    timediff := timeend.Sub(timestart)
    fmt.Println("time diff is: ", timediff.Seconds())
    
}

TestTime()

但我收到以下错误

cannot use <string> as <time.Time> in argument to timeend.Sub

如何减去我存储在created_at 列中的时间与当前时间time.Now() 之间的差?

【问题讨论】:

    标签: postgresql go time timezone


    【解决方案1】:

    错误表示您试图在 time.Time 参数上使用字符串

    试试这个:

    import (
        "fmt"
        "time"
    )
    
    func TestTime() {
        layout := time.RFC3339 // "2006-01-02T15:04:05Z07:00"
        timestart, err := time.Parse(layout, "2022-01-23T02:45:01.241589Z")
        
        if err != nil {
            panic(err)
        }
        
        timeend := time.Now()
        timediff := timeend.Sub(timestart)
        fmt.Println("time diff is:", ltimediff.Seconds())
        
    }
    
    TestTime()
    

    【讨论】:

    • 布局有什么用? layout := "2006-01-02T15:04:05.000-03:00"?
    • 它的日期格式。你应该告诉 Go 字符串的确切格式是什么
    • 知道了..谢谢..我认为即使使用time.Now() 时间格式也不同,这将是一个问题..但减法工作正常
    • 另一个题外话问题,您建议timezone 列以什么格式存储用户的时区偏好?计划使用它将本地时间返回给用户...就最佳实践而言...就像这一行 {"id":1,"email":"fUPvyBA@FApYije.ru","timezone":"pacific time","created_at":"2022-01-23T02:45:01.241589Z","updated_at":"2022-01-23T02:46:01.241591Z"}
    猜你喜欢
    • 2013-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-13
    • 1970-01-01
    • 2017-05-04
    • 2011-07-24
    相关资源
    最近更新 更多