package timez import ( "joybuywork/internal/consts" "joybuywork/internal/utils" "testing" "time" "github.com/golang-module/carbon/v2" ) func TestName(t *testing.T) { f, _ := time.ParseInLocation("2006-01-02 15:04:05", "2024-08-07 00:00:00", time.FixedZone(consts.CampaignTz, 8*3600)) //f, _ := time.Parse("2006-01-02 15:04:05", "2024-08-07 00:00:00") t.Log(f, f.Unix()) var of int32 = 9 start := carbon.CreateFromTimestamp(f.Unix()) start1 := GMTCarbon(of).CreateFromTimestamp(f.Unix()) s := GMT(carbon.Parse(start1.ToShortDateString()).Timestamp(), of) e := GMT(carbon.Parse(start1.ToShortDateString()).EndOfDay().Timestamp(), of) day, s1, e1 := GMTStartAndEndTs(of, f.Unix()) t.Log(start.ToDateTimeString(), start1.ToDateTimeString(), carbon.CreateFromTimestamp(s).ToDateTimeString(), carbon.CreateFromTimestamp(e).ToDateTimeString()) t.Log(day, carbon.CreateFromTimestamp(s1).ToDateTimeString(), carbon.CreateFromTimestamp(e1).ToDateTimeString()) } func TestWeekend(t *testing.T) { start, end := getWeekEnd(4) st := GMTTime(8, start) et := GMTTime(8, end) t.Log(st.Format(time.DateTime), et.Format(time.DateTime)) } func getWeekEnd(weekNum int32) (start, end int64) { t, _ := GMTTimeStart(8) w := utils.Ternary[int32](t.Weekday() == 0, 7, int32(t.Weekday())) var ws int64 = 7 * 86400 if w < weekNum { end = t.Unix() + int64((weekNum-w)*86400) } else { end = t.Unix() + int64((7-(w-weekNum))*86400) } return end - ws, end }