| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- package common
- import (
- "runtime/debug"
- "strings"
- "time"
- "bet24.com/log"
- )
- const SecondsOfDay = 86400 // 每天秒数
- const FirstWeek_days = 4 // 1970.1.1为周四
- const FirstWeek_Secondes = 432000 // 周日为每周起点,减去5天
- const SecondsOfWeek = 607800
- const Layout = "2006-01-02 15:04:05"
- // 获取当前时间
- func GetNowTime() time.Time {
- return time.Now()
- }
- // 获取当前时间串
- func GetNowTimeStr() string {
- return time.Now().Format(Layout)
- }
- // 时间字符串转换时间格式
- func ParseTime(value string) time.Time {
- if value == "" {
- value = "1970-01-01 00:00:00"
- }
- t, err := time.ParseInLocation(Layout, value, time.Now().Location())
- if err != nil {
- log.Error("daycompute.ParseTime error %+v", err)
- log.Error("%s", debug.Stack())
- }
- return t
- }
- func GetDifferSec(beforeSec int) int {
- now := GetTimeStamp()
- t1 := time.Unix(int64(beforeSec), 0)
- t2 := time.Unix(int64(now), 0)
- diff := t2.Sub(t1)
- sec := int(diff.Seconds())
- return sec
- }
- // 获取时间戳
- func GetTimeStamp() int {
- return int(time.Now().Unix())
- }
- // 从数据库读取的 time 已经加有时区,这里不需要再处理 Timezone_add
- func GetStamp(t time.Time) int {
- return int(t.Unix())
- }
- func timeStampToLocal(timeStamp int) int {
- nowStr := time.Unix(int64(timeStamp), 0).Format(Layout)
- u, err := time.Parse(Layout, nowStr)
- if err != nil {
- log.Error("daycompute.timeStampToLocal error %+v", err)
- log.Error("%s", debug.Stack())
- return timeStamp
- }
- return int(u.Unix())
- }
- func TimeStampToString(timeStamp int64) string {
- nowStr := time.Unix(timeStamp, 0).Format(Layout)
- u, err := time.Parse(Layout, nowStr)
- if err != nil {
- return nowStr
- }
- return u.Format(Layout)
- }
- func TimeStampToShortString(timeStamp int64) string {
- ret := TimeStampToString(timeStamp)
- ret = strings.ReplaceAll(ret, "2023-", "")
- return strings.ReplaceAll(ret, "2024-", "")
- }
- func TimeStampToTime(timeStamp int64) time.Time {
- now := time.Unix(timeStamp, 0)
- nowStr := now.Format(Layout)
- u, err := time.Parse(Layout, nowStr)
- if err != nil {
- return now
- }
- return u
- }
- func GetDayIndex(timeStamp int) int {
- return timeStampToLocal(timeStamp) / SecondsOfDay
- }
- func GetNowDayIndex() int {
- return GetDayIndex(int(time.Now().Unix()))
- }
- func GetWeekIndex(timeStamp int) int {
- return (timeStampToLocal(timeStamp)-FirstWeek_Secondes)/SecondsOfWeek + 1
- }
- func GetMonthIndex(timeStamp int) int {
- t := time.Unix(int64(timeStamp), 0)
- // 5 + 202300(年份加月份解决唯一且不重复的问题)
- return int(t.Month()) + t.Year()*100
- }
- func IsContinueDay(timeStamp1, timeStamp2 int) bool {
- day1 := GetDayIndex(timeStamp1)
- day2 := GetDayIndex(timeStamp2)
- if day1 == day2-1 || day1 == day2+1 {
- return true
- }
- return false
- }
- func IsSameDay(timeStamp1, timeStamp2 int) bool {
- return GetDayIndex(timeStamp1) == GetDayIndex(timeStamp2)
- }
- func IsSameWeek(timeStamp1, timeStamp2 int) bool {
- return GetWeekIndex(timeStamp1) == GetWeekIndex(timeStamp2)
- }
|