golang 时间戳转几秒前 几分钟前 几小时前 几天前 几年前

废话不多说直接上代码

/**
* @des 时间转换函数
* @param atime string 要转换的时间戳(秒)
* @return string
*/
func StrTime (atime int64) string{
    var byTime = []int64{365*24*60*60,24*60*60,60*60,60,1}
    var unit = []string{"年前","天前","小时前","分钟前","秒钟前"}
    now := time.Now().Unix()
    ct := now - atime
    if ct < 0{
        return "刚刚"
    }
    var res string
    for i := 0;i < len(byTime);i++{
        if ct < byTime[i]{
            continue
        }
        var temp = math.Floor(float64(ct / byTime[i]))
        ct = ct % byTime[i];
        if temp > 0 {
            var tempStr string
            tempStr = strconv.FormatFloat(temp,'f',-1,64)
            res = MergeString(tempStr,unit[i]) //此处调用了一个我自己封装的字符串拼接的函数(你也可以自己实现)
        }
        break//我想要的形式是精确到最大单位,即:"2天前"这种形式,如果想要"2天12小时36分钟48秒前"这种形式,把此处break去掉,然后把字符串拼接调整下即可(别问我怎么调整,这如果都不会我也是无语)
    }
    return res
}

/**
* @des 拼接字符串
* @param args ...string 要被拼接的字符串序列
* @return string
*/
func MergeString (args ...string) string {
    buffer := bytes.Buffer{}
    for i:=0; i<len(args); i++ {
        buffer.WriteString(args[i])
    }
    return buffer.String()
}

测试

func main() {
    res := StrTime(1545793886)
    fmt.Println(res)
    //打印出的结果 "19秒钟前"
}

原文链接https://www.woann.cn/article/17

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 1
wangchunbo

好用好用!这个好啊!!!!

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!