`Laravel`版`小丑路人社区`改版中,与`Hyperf版小丑路人社区`数据互动,此版本改版中……尚未彻底完结!

Q:

golang 时间格式转换

package time_format

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

/**
* @des 时间转换函数
* @param atime string 要转换的时间戳(秒)
* @return string
 */
func TimeToStr(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 DateToTimestamp(timeStr string) int64 {
    var LOC, _ = time.LoadLocation("Asia/Shanghai")
    //日期时间字符串
    //timeStr = "2022-02-01 10:45:15"
    //要转换成时间日期的格式模板(go诞生时间,模板必须是这个时间)
    timeTmeplate := "2006-01-02 15:04:05"
    tim, _ := time.ParseInLocation(timeTmeplate, timeStr, LOC)
    time_stamp := tim.Unix()
    fmt.Println(time_stamp)

    return time_stamp
}

// 时间戳转日期
func TimestampToDate(time_stamp int64) string {
    //时间日期格式模板
    timeTemplate := "2006-01-02 15:04"

    tm := time.Unix(time_stamp, 0)
    return tm.Format(timeTemplate)
}
Go
订阅

评论记录


评论/回复