51 lines
1.1 KiB
Go
51 lines
1.1 KiB
Go
package utils
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
"vote-admin-api/api/model"
|
|
)
|
|
|
|
// StrToLocalTime 字符串时间转localtime
|
|
func StrToLocalTime(s string) (*model.LocalTime, error) {
|
|
// 获取本地时区
|
|
location, err := time.LoadLocation("Local")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
timeParse, err := time.ParseInLocation("2006-01-02 15:04:05", s, location)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
t := model.LocalTime(timeParse)
|
|
|
|
return &t, nil
|
|
}
|
|
|
|
// TimeToAgoString 根据给定的时间返回一个描述性的字符串
|
|
func TimeToAgoString(t time.Time) string {
|
|
now := time.Now()
|
|
diffTime := now.Sub(t)
|
|
|
|
switch {
|
|
case diffTime < time.Minute:
|
|
return "1分钟前"
|
|
case diffTime < time.Hour:
|
|
minutes := int(diffTime.Minutes())
|
|
return fmt.Sprintf("%d分钟前", minutes)
|
|
case diffTime < 24*time.Hour:
|
|
return "一小时前"
|
|
case diffTime < 48*time.Hour:
|
|
return "两天前"
|
|
case diffTime < 72*time.Hour:
|
|
return "三天前"
|
|
case diffTime < 10*time.Hour*24:
|
|
days := int(diffTime.Hours()) / 24
|
|
return fmt.Sprintf("%d天前", days)
|
|
default:
|
|
return "十天前"
|
|
}
|
|
}
|