H5W3
当前位置:H5W3 > 其他技术问题 > 正文

golang 时间戳比较大小,怎么实现

一个是golang生成的当前时间戳,但是返回的是int64位的

time.Now().Unix()

一个是从数据库中取出的的时间戳

1470219268

我要做时间比较[if time.Now().Unix() > 1470219268]。。。

但是一直报错
invalid operation: now – node.AlarmMax_SignTime (mismatched types int64 and int)

我在网上找了许久,都没有一个很好的办法,比如讲数据库中的时间戳转化为时间再对比,也不行。。。

求大神指教。。。。。。。

回答:

在1.7.1下测试是可以比较的

func main() {
    if time.Now().Unix() > 1470219268 {
        fmt.Println("aaa")
    }
}

没有问题。

而且从报错信息来看,也只是int64和int不能直接比较,做一下类型转换就行了。

回答:

从数据库解析出来是定义的struct么?要是struct就把类型换成int64 ,不是就 time.Now().Unix()>int64(1470219268)

另外 要是直接是time.Now().Unix()>int64(1470219268) go是不会报错的
你可能是定义了一个变量比如
a:=1470219268
time.Now().Unix()>a 这样子会报错 a默认为int
要是这样子
var a int64
a=1470219268
time.Now().Unix()>a 这样子也是没问题的。

回答:

等号两边必须都是int64才可以比较

回答:

类型转换,go中的比较必须是同类型之间的 就像整形 也分 int64 , int , int32 , 必须显示转换这些才能进行比较

回答:

做一个强制转换就行了.

c := time.Now().Unix()
var a int = 1470219268
if int64(a) > c {
    fmt.Println(1)
} else {
    fmt.Println(2)
}

本文地址:H5W3 » golang 时间戳比较大小,怎么实现

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址