go_dreamfactory/utils/time.go
2022-10-12 09:37:28 +08:00

70 lines
1.7 KiB
Go

package utils
import (
"fmt"
"math"
"time"
"github.com/jinzhu/now"
)
// 判断时间点处于今天
func IsToday(d int64) bool {
tt := time.Unix(d, 0)
now := time.Now()
return tt.Year() == now.Year() && tt.Month() == now.Month() && tt.Day() == now.Day()
}
//判断是否大于1周
func IsAfterWeek(d int64) bool {
tt := time.Unix(d, 0)
nowt := time.Now()
if !tt.Before(nowt) {
return false
}
at := now.With(tt).AddDate(0, 0, 7).Unix()
return nowt.Unix() >= at
}
// 获取当前时间戳下一天0点时间戳
func GetZeroTime(curTime int64) int64 {
currentTime := time.Unix(curTime, 0)
startTime := time.Date(currentTime.Year(), currentTime.Month(), currentTime.Day(), 0, 0, 0, 0, currentTime.Location())
return startTime.Unix() + 86400 //3600*24
}
func IsYestoday(timestamp int64) bool {
tt := time.Unix(timestamp, 0)
yesTime := time.Now().AddDate(0, 0, -1)
return tt.Year() == yesTime.Year() && tt.Month() == yesTime.Month() && tt.Day() == yesTime.Day()
}
// 确定换算规则 现实1H = 虚拟4H
// 计算:根据开服时间为起始时间,计算当前时间与起始时间的差值,计算虚拟当前时间
func MatrixingHour(beginTime string) (t time.Time) {
location, err := time.LoadLocation("Asia/Shanghai")
if err != nil {
return
}
myConfig := &now.Config{
WeekStartDay: time.Monday,
TimeLocation: location,
TimeFormats: []string{"2006-01-02 15:04:05"},
}
serverStartTime, _ := myConfig.Parse(beginTime)
n := time.Now()
timeSub := n.Sub(serverStartTime)
hourSub := timeSub.Hours() * 2
hh, _ := time.ParseDuration("1h")
fmt.Println(hourSub, math.Ceil(hourSub))
t2 := serverStartTime.Add(hh * time.Duration(math.Ceil(hourSub)))
fmt.Println(t2)
return
}