首页 > 其他 > 详细

golang 时间工具类

时间:2019-12-11 16:25:09      阅读:150      评论:0      收藏:0      [点我收藏+]
package services

import (
	"bytes"
	"math"
	"strconv"
	"time"
)

type TimeUtilService struct {
}

/**
* @des 时间转换函数
* @param atime string 要转换的时间戳(秒)
* @return string
 */
func (this *TimeUtilService) StrTime(atime int64) string {
	var byTime = []int64{365 * 24 * 60 * 60, 30 * 24 * 60 * 60, 7 * 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 = this.MergeString(tempStr, unit[i]) //此处调用了一个我自己封装的字符串拼接的函数(你也可以自己实现)
		}
		break //我想要的形式是精确到最大单位,即:"2天前"这种形式,如果想要"2天12小时36分钟48秒前"这种形式,把此处break去掉,然后把字符串拼接调整下即可
	}
	return res
}

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

  

golang 时间工具类

原文:https://www.cnblogs.com/shijiu520/p/12022692.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!