63 lines
1.4 KiB
Go
63 lines
1.4 KiB
Go
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
|
|
}
|