redigo中reply interface{}转换日期求差值

导读:本篇文章讲解 redigo中reply interface{}转换日期求差值,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

关于redigo中使用以下方法,可以自定义返回redis数据库中你想获取的值。

Do(commandName string, args …interface{}) (reply interface{}, err error)

那么问题就来了。我使用该方法获取redis中存储的time.Now()类型数据,然后和系统当前时间进行求差。由于返回reply interface{},所以我想着定义一个time.Time类型的变量,然后进行序列化反序列化处理。
在这里插入图片描述
但是求差返回了一个:2562047h47m16.854775807s 很明显这是不对的。
在这里插入图片描述
然后我又尝试直接 t :=oldTime.(time.Time),然后控制台报了一个:

interface conversion:interface{} is []uint8,not timt.Time

在这里插入图片描述
我看博客上有人说可以使用库中的Replay Helpers进行类型转换,把replay从interface{}转换成我们想要的类型,如下:
在这里插入图片描述
但是没我想要的日期类型。后来我就把时间转为秒存储了。
由于之前采坑知道了这个数据是[]uint8的,所以我就先给它转了一下:

var t = oldTime.([]uint8)

然后又转换为string:

 ba := []byte{}
	for _, b := range t {
		ba = append(ba, byte(b))
			            }
    	log.Infof("ba: %v", string(ba))

用秒计算,我获取系统当前时间也转成了秒,要想求差值必须类型一致。可以看到time.Now().Unix()是int64类型,所以需要把string给转成int64:

oldTimes, err := strconv.ParseInt(string(ba), 10, 64)
			if err != nil {
				log.Error("Error converting int64: %v", err)
			}

然后就可以求差了。计算出1秒
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/115806.html

(0)
Java光头强的头像Java光头强

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!