119 lines
3.0 KiB
Go
119 lines
3.0 KiB
Go
package utils
|
|
|
|
import (
|
|
"fmt"
|
|
"go_dreamfactory/sys/configure"
|
|
"math"
|
|
"time"
|
|
|
|
"github.com/jinzhu/now"
|
|
)
|
|
|
|
// 判断时间点处于今天
|
|
func IsToday(d int64) bool {
|
|
tt := time.Unix(d, 0)
|
|
now := configure.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 := configure.Now()
|
|
if !tt.Before(nowt) {
|
|
return false
|
|
}
|
|
at := now.With(tt).AddDate(0, 0, 7).Unix()
|
|
return nowt.Unix() >= at
|
|
}
|
|
|
|
// 是否今日首次
|
|
func IsFirstTody(timestamp int64) bool {
|
|
now := configure.Now()
|
|
if timestamp == 0 || timestamp > now.Unix() {
|
|
return false
|
|
}
|
|
tt := time.Unix(timestamp, 0)
|
|
if !IsToday(timestamp) {
|
|
if tt.Before(now) {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
|
|
// 获取当前时间戳下一天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 := configure.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 := configure.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
|
|
}
|
|
|
|
func AddHour(hour int) time.Time {
|
|
return configure.Now().Add(time.Duration(hour) * time.Hour)
|
|
}
|
|
|
|
// CD
|
|
func IsInCDHour(cdTime int64) bool {
|
|
if cdTime == 0 {
|
|
return false
|
|
}
|
|
return configure.Now().Unix() < cdTime
|
|
}
|
|
|
|
// 获取本月的开始和结束的时间戳
|
|
func GetMonthStartEnd() (int64, int64) {
|
|
t := configure.Now()
|
|
monthStartDay := t.AddDate(0, 0, -t.Day()+1)
|
|
monthStartTime := time.Date(monthStartDay.Year(), monthStartDay.Month(), monthStartDay.Day(), 0, 0, 0, 0, t.Location())
|
|
monthEndDay := monthStartTime.AddDate(0, 1, -1)
|
|
monthEndTime := time.Date(monthEndDay.Year(), monthEndDay.Month(), monthEndDay.Day(), 23, 59, 59, 0, t.Location())
|
|
_d1 := monthStartTime.Unix()
|
|
_d2 := monthEndTime.Unix()
|
|
fmt.Printf("%d,%d", _d1, _d2)
|
|
return _d1, _d2
|
|
}
|
|
|
|
// 获取今天零点时间戳
|
|
func GetTodayZeroTime(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()
|
|
}
|