package common import ( "fmt" "github.com/gogf/gf/os/gtime" ) /* GetCNStartOfWeek 获取国内意义上一周的第一天(周一) 外国认为是周日 */ func GetCNStartOfWeek(time *gtime.Time) *gtime.Time { day := int(time.Weekday()) if day == 0 { return time.AddDate(0, 0, -6) } else { return time.AddDate(0, 0, -day+1) } } /* GetCNEndOfWeek 获取国内意义上一周的第七天(周日) 外国认为是周六 */ func GetCNEndOfWeek(time *gtime.Time) *gtime.Time { day := int(time.Weekday()) if day == 0 { return time.AddDate(0, 0, 0).EndOfDay() } else { return time.AddDate(0, 0, 7-day).EndOfDay() } } // GetCNWeekday 返回数字类型的周信息(1,2,3,4,5,6,7) func GetCNWeekday(time *gtime.Time) int { day := int(time.Weekday()) if day == 0 { return 7 } else { return day } } // GetNextTimeNode 获取当前时间的下一个预约节点 func GetNextTimeNode(signOutTime *gtime.Time) *gtime.Time { currentMinute := signOutTime.Minute() if currentMinute >= 30 { nextTimeStr := fmt.Sprintf("%v-%.2v-%.2v %.2v:%.2v:%.2v", signOutTime.Year(), int(signOutTime.Month()), signOutTime.Day(), signOutTime.Hour()+1, 0, 0) return gtime.NewFromStr(nextTimeStr) } nextTimeStr := fmt.Sprintf("%v-%.2v-%.2v %.2v:%.2v:%.2v", signOutTime.Year(), int(signOutTime.Month()), signOutTime.Day(), signOutTime.Hour(), 30, 0) return gtime.NewFromStr(nextTimeStr) }