package utils import ( "alfred/pkg/log" "fmt" "github.com/gorhill/cronexpr" "go.uber.org/zap" "strings" "time" ) func GetCurrentTimeInMillis() int64 { timeInIst, err := time.LoadLocation("Asia/Kolkata") if err != nil { return 0 } return time.Now().In(timeInIst).UnixMilli() } func GetTimeWithOffsetInMillis(offset time.Duration) int64 { timeInIst, err := time.LoadLocation("Asia/Kolkata") if err != nil { return 0 } return time.Now().In(timeInIst).Add(offset).UnixMilli() } func GetCurrentDate() (int, time.Month, int) { timeInIst, err := time.LoadLocation("Asia/Kolkata") if err != nil { return 0, 0, 0 } return time.Now().In(timeInIst).Date() } func GetDateWithOffset(offset time.Duration) (int, time.Month, int) { timeInIst, err := time.LoadLocation("Asia/Kolkata") if err != nil { return 0, 0, 0 } return time.Now().In(timeInIst).Add(offset).Date() } func NormalizeDate(date string) string { dateSplits := strings.Split(date, "-") if len(dateSplits) != 3 { log.Error("invalid date format", zap.String("date", date)) return EMPTY } dateSplits[1] = fmt.Sprintf("%02s", dateSplits[1]) dateSplits[2] = fmt.Sprintf("%02s", dateSplits[2]) return strings.Join(dateSplits, "-") } func GetCronTime(cronExpression string) int64 { // Parse the cron expression expr, _ := cronexpr.Parse(cronExpression) diffTime := expr.Next(time.Now()).UnixMilli() - time.Now().UnixMilli() return diffTime }