古老的榕树

Go 时间中文个性化处理

发表 2016-09-26 00:06 阅读(1789) 评论(0) 赞(4)

现在有些时间比较个性化,比如:5年前,11月前,20天前,23小时前,59分钟前,59秒前,刚刚... 等等,Go 语言可没有这些函数处理,我相信多数语言也不会内置处理此类的东西的,现在自己写个方法,首先要算出当前时间和给定的时间差,就是秒差,有了这个秒差,再进一步人工处理。废话少说,贴上代码吧(代码只是瞬间的思路和随手写法,有不当之处,请不吝留言补充)


package lib

import (
	"fmt"
	"time"
)

//格式化时间,如 5年前,11月前,20天前,23小时前,59分钟前,59秒前,刚刚
func PrettyTimeZh(myTime time.Time) string {
	seconds := time.Now().Sub(myTime).Seconds()

	//60*60*24*30.4*12=31518720 一年的秒数
	if seconds > 31518720 {
		return fmt.Sprintf("%d年前", int(seconds/31518720))
	}

	//60*60*24*30.4=2626560 一月的秒数
	if seconds > 2626560 {
		return fmt.Sprintf("%d月前", int(seconds/2626560))
	}

	//60*60*24=86400 一天的秒数
	if seconds > 86400 {
		return fmt.Sprintf("%d天前", int(seconds/86400))
	}

	//60*60=3600 一小时的秒数
	if seconds > 3600 {
		return fmt.Sprintf("%d小时前", int(seconds/3600))
	}

	//60 一分钟的秒数
	if seconds > 60 {
		return fmt.Sprintf("%d分钟前", int(seconds/60))
	}

	if seconds > 1 {
		return fmt.Sprintf("%d秒前", int(seconds))
	}

	return fmt.Sprintf("刚刚")
}

注意:一年的一月,平均值定为 30.4天

Donate

如果文章对您有帮助,请使用手机支付宝扫描二维码,捐赠X元,作者离不开读者的支持!

0 条网友评论

哇~~~ 竟然还没有评论!

称呼*
邮箱*
内容*
验证码*
验证码 看不清换张